:root{--paper:#f2f2f0;--paper-2:#e9e9e6;--ink:#1a222e;--ink-soft:#5a6472;--shu:#e14b42;--shu-soft:#fc8580;--shu-deep:#c73b33;--teal:#5e9391;--term:#141d2b;--term-ink:#e6e9ed;--line:#dcdcd8;--ease:cubic-bezier(.22, 1, .36, 1);--spring:cubic-bezier(.34, 1.56, .64, 1)}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--studio-font-sans:"Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;--studio-font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--portal-font-sans:var(--studio-font-sans);--portal-font-mono:var(--studio-font-mono);--portal-ink:var(--ink);--portal-muted:var(--ink-soft);--portal-line:var(--line);--portal-paper:var(--paper);--portal-surface:#fbfbfa;--portal-panel:#fff;--portal-green:var(--teal);--portal-red:var(--shu);--portal-yellow:#fff2a8;--portal-shadow:#1a222e1f}*{box-sizing:border-box}html{background:var(--paper);min-height:100%;color:var(--portal-ink);margin:0}body{background:linear-gradient(90deg, #5e93911a 1px, transparent 1px), linear-gradient(180deg, #5e939114 1px, transparent 1px), var(--portal-paper);min-height:100svh;color:var(--portal-ink);font-family:var(--portal-font-sans);background-size:28px 28px;margin:0;line-height:1.7}button,input,select,textarea{font:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--shu-soft);outline-offset:3px}button{cursor:pointer}.portal-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.portal-login-main{grid-template-rows:1fr auto;place-items:center;gap:20px;min-height:100vh;padding:24px;display:grid}.portal-login-panel{border:2px solid var(--portal-ink);background:var(--portal-panel);width:min(420px,100%);box-shadow:6px 6px 0 var(--portal-shadow);border-radius:8px;padding:28px}.portal-kicker{color:var(--portal-red);font-family:var(--portal-font-mono);letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:800}.portal-login-panel h1,.portal-session-list h2,.portal-detail-panel h2,.portal-detail-section h3{margin:4px 0 0;line-height:1.15}.portal-login-form{gap:14px;margin-top:22px;display:grid}.portal-login-form label{color:var(--portal-muted);gap:6px;font-size:13px;font-weight:700;display:grid}.portal-login-form input{border:2px solid var(--portal-line);width:100%;min-height:44px;color:var(--portal-ink);background:#fff;border-radius:6px;padding:10px 12px}.portal-login-form input:focus-visible,.portal-primary-button:focus-visible,.portal-ghost-button:focus-visible,.portal-nav-button:focus-visible,.portal-action-card:focus-visible,.portal-learner-button:focus-visible,.portal-session-button:focus-visible,.portal-code-tab:focus-visible,.portal-work-card:focus-visible{outline:2px solid var(--shu-soft);outline-offset:2px}.portal-message{min-height:24px;color:var(--portal-red);font-size:13px;font-weight:700}.portal-primary-button,.portal-ghost-button{border:2px solid var(--portal-ink);border-radius:6px;min-height:42px;padding:9px 14px;font-weight:800}.portal-primary-button{background:var(--portal-red);color:#fff}.portal-primary-button:disabled{opacity:.6}.portal-ghost-button{color:var(--portal-ink);background:#fff}.portal-ghost-button:disabled,.portal-action-card:disabled{cursor:not-allowed;opacity:.55}.portal-app{flex-direction:column;min-height:100svh;display:flex}.portal-footer{width:100%;color:var(--portal-muted);font-family:var(--portal-font-mono);letter-spacing:0;text-align:center;margin-top:auto;padding:20px 24px 24px;font-size:12px;font-weight:700}.portal-footer small{font:inherit}.portal-topbar{border-bottom:2px solid var(--portal-line);background:var(--portal-surface);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;min-height:66px;padding:14px 18px;display:grid}.portal-brand{align-items:center;gap:10px;min-width:0;text-decoration:none;display:inline-flex}.portal-brand img{flex:none;display:block}.portal-wordmark{letter-spacing:0;font-size:17px;font-weight:700}.portal-tag{color:var(--portal-red);font-family:var(--portal-font-mono);letter-spacing:0;font-size:12px;font-weight:700}.portal-session-actions{justify-content:flex-end;align-items:center;min-width:0;display:inline-flex;position:relative}.portal-session-menu{position:relative}.portal-session-trigger{border:2px solid var(--portal-line);background:var(--portal-panel);width:42px;height:42px;color:var(--portal-ink);cursor:pointer;border-radius:999px;place-items:center;list-style:none;display:grid}.portal-session-trigger::-webkit-details-marker{display:none}.portal-session-trigger:hover,.portal-session-trigger:focus-visible,.portal-session-menu[open] .portal-session-trigger{border-color:var(--portal-ink);background:var(--portal-yellow)}.portal-session-popover{z-index:20;border:2px solid var(--portal-ink);background:var(--portal-panel);width:min(260px,100vw - 24px);box-shadow:6px 6px 0 var(--portal-shadow);border-radius:8px;gap:10px;padding:12px;display:grid;position:absolute;top:calc(100% + 10px);right:0}.portal-session-popover:before{border-top:2px solid var(--portal-ink);border-left:2px solid var(--portal-ink);background:var(--portal-panel);content:"";width:12px;height:12px;position:absolute;top:-7px;right:14px;transform:rotate(45deg)}.portal-session-summary{gap:3px;min-width:0;line-height:1.25;display:grid}.portal-session-summary span,.portal-session-summary small{min-width:0;color:var(--portal-muted);font-family:var(--portal-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.portal-session-summary strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:15px;font-weight:900;overflow:hidden}.portal-session-links{gap:7px;padding-top:2px;display:grid}.portal-session-link{border:2px solid var(--portal-line);background:var(--portal-panel);min-height:34px;color:var(--portal-ink);text-align:left;border-radius:7px;justify-content:flex-start;align-items:center;gap:7px;padding:7px 9px;font-size:12px;font-weight:900;display:inline-flex}.portal-session-link:hover,.portal-session-link:focus-visible{border-color:var(--portal-ink);background:var(--portal-yellow)}.portal-session-logout{border:2px solid var(--portal-line);background:var(--portal-surface);min-height:38px;color:var(--portal-ink);cursor:pointer;font:inherit;border-radius:7px;justify-content:center;align-items:center;gap:7px;padding:8px 10px;font-size:13px;font-weight:900;display:inline-flex}.portal-session-logout:hover,.portal-session-logout:focus-visible{border-color:var(--portal-ink);background:var(--portal-yellow)}.portal-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:14px;display:flex}.portal-nav-button{min-height:0;color:var(--portal-muted);background:0 0;border:0;align-items:center;padding:2px 0;font-size:13px;font-weight:700;display:inline-flex;position:relative}.portal-nav-button:after{background:var(--portal-red);content:"";opacity:0;height:2px;transition:opacity .12s var(--ease), transform .12s var(--ease);position:absolute;bottom:-5px;left:0;right:0;transform:scaleX(.35)}.portal-nav-button:hover,.portal-nav-button:focus-visible,.portal-nav-button[data-active=true]{color:var(--portal-ink)}.portal-nav-button:hover:after,.portal-nav-button:focus-visible:after,.portal-nav-button[data-active=true]:after{opacity:1;transform:scaleX(1)}.portal-status{color:var(--portal-red);margin:14px clamp(16px,4vw,40px) 0;font-size:13px;font-weight:800;display:block}.portal-home{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:12px;display:grid}.portal-action-card{border:2px solid var(--portal-ink);min-width:0;min-height:170px;color:var(--portal-ink);text-align:left;box-shadow:0 2px 0 var(--portal-line);background:#fff;border-radius:8px;align-content:space-between;gap:12px;padding:18px;display:grid}.portal-action-card:hover,.portal-action-card:focus-visible{border-color:var(--portal-ink);background:var(--portal-yellow)}.portal-action-card strong{font-size:clamp(24px,3vw,34px);line-height:1.05}.portal-action-card small{color:var(--portal-muted);font-size:13px;line-height:1.5}.portal-gallery-panel{gap:24px;width:min(1360px,100% - 24px);margin:clamp(28px,6vw,64px) auto;display:grid}.portal-gallery-list,.portal-gallery-detail{border:2px solid var(--portal-line);background:var(--portal-panel);box-shadow:0 2px 0 var(--portal-line);gap:18px;padding:clamp(18px,3vw,34px);display:grid}.portal-gallery-heading{border-bottom:2px solid var(--portal-line);justify-content:space-between;align-items:end;gap:16px;padding-bottom:18px;display:flex}.portal-gallery-heading h2,.portal-gallery-preview-shell h3{margin:0;font-size:clamp(1.2rem,2vw,1.8rem)}.portal-gallery-heading p{max-width:320px;color:var(--portal-muted);margin:0;font-size:.9rem;line-height:1.7}.portal-gallery-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.portal-gallery-filter-list{border:0;flex-wrap:wrap;gap:8px;min-width:0;margin:0;padding:0;display:flex}.portal-gallery-filter-button{border:2px solid var(--portal-line);background:var(--portal-surface);min-height:34px;color:var(--portal-muted);cursor:pointer;font-family:var(--portal-font-mono);padding:6px 10px;font-size:.78rem;font-weight:800;line-height:1}.portal-gallery-filter-button[aria-pressed=true]{border-color:var(--portal-ink);background:var(--portal-yellow);color:var(--portal-ink)}.portal-gallery-sort-label{color:var(--portal-muted);font-family:var(--portal-font-mono);align-items:center;gap:8px;font-size:.78rem;font-weight:800;display:inline-flex}.portal-gallery-sort{border:2px solid var(--portal-line);background:var(--portal-surface);min-height:34px;color:var(--portal-ink);font:inherit;padding:5px 32px 5px 10px}.portal-gallery-grid{--portal-gallery-card-min:260px;--portal-gallery-card-max:360px;grid-template-columns:repeat(auto-fit, minmax(min(100%, var(--portal-gallery-card-min)), var(--portal-gallery-card-max)));justify-content:start;justify-items:stretch;gap:12px;display:grid}.portal-gallery-card{max-width:min(100%, var(--portal-gallery-card-max));border:2px solid var(--portal-line);background:var(--portal-surface);min-height:136px;color:var(--portal-ink);text-align:left;box-shadow:0 2px 0 var(--portal-line);gap:12px;padding:14px;display:grid}.portal-gallery-card:hover{border-color:var(--portal-ink)}.portal-gallery-card strong{font-family:var(--portal-font-mono);font-size:1.05rem;line-height:1.4}.portal-gallery-tags{flex-wrap:wrap;gap:6px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.portal-gallery-tag{border:2px solid var(--portal-line);background:var(--portal-panel);min-height:26px;color:var(--portal-muted);font-family:var(--portal-font-mono);align-items:center;padding:3px 7px;font-size:.72rem;font-weight:800;line-height:1;display:inline-flex}.portal-gallery-card-preview{border:2px solid var(--portal-line);background:#fff;overflow:hidden}.portal-gallery-preview-shell{gap:14px;display:grid}.portal-gallery-preview-shell header{justify-content:space-between;align-items:center;gap:16px;display:flex}.portal-gallery-preview{border:2px solid var(--portal-ink);pointer-events:none;background:#fff;width:100%;min-height:clamp(360px,54vw,620px)}.portal-gallery-card-preview .portal-gallery-preview{aspect-ratio:16/10;border:0;min-height:clamp(220px,20vw,320px);display:block}.portal-family-layout{gap:12px;padding:12px;display:grid}.portal-management-sidebar{gap:12px;min-width:0;display:grid}.portal-family-accounts,.portal-account-card,.portal-learner-selector,.portal-session-list,.portal-detail-panel{min-width:0}.portal-family-accounts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.portal-account-card,.portal-learner-selector,.portal-session-list{border:2px solid var(--portal-line);box-shadow:0 2px 0 var(--portal-line);background:#fff;border-radius:8px;align-content:start;gap:12px;display:grid}.portal-account-card,.portal-learner-selector{padding:14px}.portal-learner-options{flex-wrap:wrap;gap:8px;display:flex}.portal-learner-button,.portal-session-button{border:2px solid var(--portal-line);min-height:64px;color:var(--portal-ink);text-align:left;box-shadow:0 2px 0 var(--portal-line);background:#fff;border-radius:8px;gap:4px;padding:10px;display:grid}.portal-learner-button{flex:220px;min-width:min(220px,100%)}.portal-session-button{width:100%}.portal-learner-button:hover,.portal-session-button:hover,.portal-work-card:hover{border-color:var(--portal-ink);background:var(--portal-yellow)}.portal-learner-button[data-active=true],.portal-session-button[data-active=true]{border-color:var(--portal-ink);background:var(--portal-yellow);box-shadow:0 2px 0 var(--portal-ink)}.portal-learner-button span,.portal-session-button span,.portal-learner-button small,.portal-session-button small{color:var(--portal-muted);overflow-wrap:anywhere;font-size:12px}.portal-session-list{overflow:hidden}.portal-session-list>header{padding:14px 14px 0}.portal-session-items{border-top:2px solid var(--portal-line);gap:0;display:grid;overflow:auto}.portal-session-items .portal-session-button{border:0;border-bottom:2px solid var(--portal-line);min-height:76px;box-shadow:none;border-radius:0}.portal-session-items .portal-session-button:last-child{border-bottom:0}.portal-account-card h2,.portal-learner-selector h2,.portal-session-list h2{margin:4px 0 0}.portal-family-workspace{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.portal-family-workspace .portal-session-list,.portal-family-workspace .portal-detail-panel{min-height:calc(100svh - 270px)}.portal-info-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.portal-info-list div,.portal-guardian-item,.portal-selected-learner{min-width:0}.portal-info-list div{gap:1px;display:grid}.portal-info-list dt,.portal-info-list dd{margin:0}.portal-info-list dt,.portal-guardian-item span,.portal-guardian-item small,.portal-selected-learner small{color:var(--portal-muted);overflow-wrap:anywhere;font-size:12px;font-weight:800}.portal-info-list dd,.portal-guardian-item strong,.portal-selected-learner strong{overflow-wrap:anywhere;font-weight:900}.portal-guardian-list{gap:8px;display:grid}.portal-guardian-item{border:2px dashed var(--portal-line);background:var(--portal-surface);border-radius:8px;gap:2px;padding:10px;display:grid}.portal-selected-learner{border-top:2px solid var(--portal-line);gap:8px;padding-top:10px;display:grid}.portal-detail-panel{border:2px solid var(--portal-line);box-shadow:0 2px 0 var(--portal-line);background:#fff;border-radius:8px;align-content:start;gap:16px;padding:18px;display:grid}.portal-session-hero{border-bottom:2px solid var(--portal-line);justify-content:space-between;align-items:start;gap:16px;padding-bottom:16px;display:flex}.portal-session-hero p{color:var(--portal-muted);margin:6px 0 0;font-size:14px;font-weight:800}.portal-session-badges{flex-wrap:wrap;justify-content:end;gap:8px;display:flex}.portal-session-badges strong,.portal-session-badges mark,.portal-work-head mark,.portal-work-card mark{border:2px solid var(--portal-ink);color:var(--portal-muted);white-space:nowrap;background:#f4f6f1;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900}.portal-session-badges strong{color:var(--portal-ink);background:#fff2a8}.portal-session-badges mark[data-public=true],.portal-work-head mark[data-public=true],.portal-work-card mark[data-public=true]{border-color:var(--portal-green);color:var(--portal-green);background:#eef7f2}.portal-session-body{gap:18px;display:grid}.portal-study-record{gap:12px;min-width:0;display:grid}.portal-study-record h3,.portal-work-head h3,.portal-code-head h3{margin:4px 0 0}.portal-memo{border-left:5px solid var(--portal-green);color:var(--portal-ink);background:#eef7f2;margin:0;padding:12px}.portal-detail-section{gap:12px;display:grid}.portal-quiz-details{border:2px solid var(--portal-line);background:#fff;border-radius:8px}.portal-quiz-details summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;list-style:none;display:flex}.portal-quiz-details summary::-webkit-details-marker{display:none}.portal-quiz-details summary:after{border-right:2px solid var(--portal-ink);border-bottom:2px solid var(--portal-ink);content:"";width:10px;height:10px;transition:transform .12s var(--ease);transform:rotate(45deg)}.portal-quiz-details[open] summary:after{transform:rotate(225deg)}.portal-quiz-details summary>span{gap:2px;min-width:0;display:grid}.portal-quiz-details summary strong{overflow-wrap:anywhere}.portal-quiz-details summary small{color:var(--portal-muted);font-family:var(--portal-font-mono);white-space:nowrap;margin-left:auto;font-size:12px;font-weight:900}.portal-quiz-grid{gap:12px;padding:0 14px 14px;display:grid}.portal-quiz-card{border:2px solid var(--portal-line);border-radius:8px;padding:14px}.portal-quiz-card>div{justify-content:space-between;gap:12px;margin-bottom:10px;display:flex}.portal-quiz-card ol{gap:10px;margin:0;padding-left:20px;display:grid}.portal-quiz-card li{gap:4px;display:grid}.portal-quiz-card p,.portal-quiz-card small,.portal-quiz-card em{margin:0}.portal-quiz-card small,.portal-quiz-card em,.portal-empty{color:var(--portal-muted)}.portal-work-detail{gap:14px;min-width:0;padding-top:4px;display:grid}.portal-work-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.portal-work-head mark,.portal-work-card mark{justify-self:end}.portal-work-grid{grid-template-columns:minmax(320px,1.15fr) minmax(300px,.85fr);align-items:stretch;gap:14px;display:grid}.portal-code-workspace{gap:10px;min-width:0;display:grid}.portal-code-head{gap:0;display:grid}.portal-code-tabs{flex-wrap:wrap;gap:8px;display:flex}.portal-code-tab{border:2px solid var(--portal-line);color:var(--portal-muted);background:#fff;border-radius:6px;padding:7px 10px;font-size:12px;font-weight:900}.portal-code-tab[aria-selected=true]{border-color:var(--portal-ink);color:var(--portal-ink);background:var(--portal-yellow);box-shadow:0 2px 0 var(--portal-ink)}.portal-code-editor{border:2px solid var(--portal-line);background:var(--term);border-radius:8px;min-height:320px;overflow:hidden}.portal-code-editor .studio-code-editor,.portal-code-editor .cm-editor{min-height:320px}.portal-code-editor .cm-editor{height:100%}.portal-code-editor .cm-scroller{min-height:320px}.portal-publication-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.portal-publication-note{border:2px solid var(--portal-line);color:var(--portal-ink);background:#fff8cf;border-radius:8px;flex-basis:100%;margin:0;padding:10px 12px;font-size:13px;font-weight:800}.portal-preview{border:2px solid var(--portal-ink);background:#fff;border-radius:8px;width:100%;min-height:420px}.portal-empty{border:2px dashed var(--portal-line);border-radius:8px;margin:0;padding:12px}.portal-work-items{gap:12px;display:grid}.portal-work-card{border:2px solid var(--portal-line);width:100%;color:var(--portal-ink);text-align:left;background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px;padding:14px;display:grid}.portal-work-card[data-active=true]{border-color:var(--portal-ink);background:var(--portal-yellow);box-shadow:0 2px 0 var(--portal-ink)}.portal-work-card>div:first-child{gap:5px;min-width:0;display:grid}.portal-work-card span,.portal-work-card small{color:var(--portal-muted);overflow-wrap:anywhere;font-size:12px}.portal-work-card strong{overflow-wrap:anywhere}.portal-management-sidebar>.portal-works-panel{margin:0}@media (min-width:981px){.portal-family-layout{min-height:calc(100svh - 66px)}.portal-family-workspace .portal-session-list,.portal-family-workspace .portal-detail-panel{max-height:calc(100svh - 24px);position:sticky;top:12px}.portal-family-workspace .portal-detail-panel{overflow:auto}.portal-family-workspace .portal-session-list{overflow:hidden}.portal-session-items{max-height:calc(100svh - 110px);overflow:auto}}@media (max-width:980px){.portal-home,.portal-family-accounts,.portal-family-workspace{grid-template-columns:1fr}.portal-learner-options{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.portal-info-list{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.portal-work-grid{grid-template-columns:1fr}}@media (max-width:560px){.portal-topbar,.portal-session-hero,.portal-quiz-card>div{flex-direction:column;align-items:stretch}.portal-topbar{grid-template-columns:minmax(0,1fr) auto;display:grid}.portal-nav,.portal-work-card{display:grid}.portal-nav{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));justify-content:stretch;gap:12px}.portal-nav-button{justify-content:center}.portal-work-card{grid-template-columns:1fr}.portal-work-card mark{justify-self:start}.portal-session-badges{justify-content:start}}
