/* точки: light glass, with a slow rose and lavender aura.
   Screen styling never changes printed geometry or camera coordinates. */
@media screen{
  :root{--ink:#293c38;--muted:#535f67;--teal:#315f57;--teal-dark:#244b44;--mint:#e6f0ebd9;--bg:#f7f7fa;--line:#dce1e5;--white:#fffffff0;--surface:#ffffffd9;--sand:#f5eee4e6;--sky:#e8edf9db;--radius:20px;--context-surface:var(--mint);--motion-ease:cubic-bezier(.23,1,.32,1)}
  html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
  body{background:var(--bg);color:var(--ink)}
  #app{isolation:isolate;min-height:100svh}
  #app::before,#app::after{content:"";position:fixed;inset:-12%;z-index:-1;pointer-events:none;animation:aura-drift 28s cubic-bezier(.45,0,.55,1) infinite alternate}
  #app::before{background:radial-gradient(ellipse at 84% 12%,#cfc4ee85,transparent 48%),radial-gradient(ellipse at 12% 52%,#bce4d459,transparent 49%)}
  #app::after{background:radial-gradient(ellipse at 66% 86%,#efc5df70,transparent 48%),radial-gradient(ellipse at 13% 8%,#dce5f985,transparent 45%);animation-name:aura-return;animation-duration:34s;animation-delay:-12s}
  #app:has(.shell[data-section=scanner])::before,#app:has(.shell[data-section=scanner])::after{animation-play-state:paused}
  button,input,select,textarea{font-family:inherit}
  h1,h2,h3{color:var(--ink)}
  h1{letter-spacing:-1.2px}h2{letter-spacing:-.6px}
  .brand{display:inline-flex;gap:10px;align-items:center;font-size:28px;font-weight:750;line-height:1.2;letter-spacing:-1px;color:var(--ink)}
  .brand-mark{display:inline-flex;align-items:center;justify-content:center;gap:4px;width:40px;height:34px;border-radius:0;background:none;color:var(--teal);flex:none}
  .brand-dot{display:block;flex:none;width:8px;height:8px;border-radius:50%;background:currentColor;animation:dots-arrive 280ms var(--motion-ease) both}
  .brand-dot:nth-child(2){animation-delay:70ms}.brand-dot:nth-child(3){animation-delay:140ms}
  .shell[data-brand-intro=false] .brand-dot{animation:none}
  .shell:has([data-working]) .brand-dot{animation:none}
  .shell:has([data-working=true]) .brand-dot{animation:dots-arrive 900ms var(--motion-ease) 450ms infinite}
  .shell:has([data-working=true]) .brand-dot:nth-child(2){animation-delay:540ms}.shell:has([data-working=true]) .brand-dot:nth-child(3){animation-delay:630ms}
  .brand-word{white-space:nowrap}
  button,[role=button],summary{-webkit-user-select:none;user-select:none;touch-action:manipulation}
  .btn{min-height:44px;border-radius:12px;font-size:15px;padding:11px 16px;line-height:1.4;transition:background-color 120ms var(--motion-ease),border-color 120ms var(--motion-ease),transform 120ms var(--motion-ease)}
  .btn:not(:disabled):active:not(:focus-visible){transform:scale(.98)}
  .side-link:active,.mobile-nav-link:active{background:var(--mint)}
  .sidebar nav,dialog{overscroll-behavior:contain}
  .btn.soft{background:var(--mint);color:var(--teal-dark)}
  .btn:disabled{transform:none}
  :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid var(--teal);outline-offset:3px}
  .badge{border-radius:8px}.badge.amber{color:#76531c;background:#f9eed8}.badge.draft{color:var(--muted)}
  .eyebrow{font-size:11px;letter-spacing:1.4px;color:var(--muted);font-weight:700;line-height:1.5}
  .shell{grid-template-columns:240px minmax(0,1fr);font-size:16px}
  .sidebar{width:240px;padding:24px 18px 16px;background:#ffffffb8;border-right-color:#ffffffd9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  .sidebar .brand{margin:0 0 24px 8px}.sidebar .side-link{border-radius:12px;padding:10px 12px;min-height:44px;font-size:15px;font-weight:550;margin:2px 0}
  .sidebar .side-link.active{background:var(--context-surface);color:var(--teal-dark);box-shadow:inset 0 0 0 1px #ffffff85}
  .workspace-label{font-size:10px;letter-spacing:1.3px}.side-divider{margin:12px}
  .sidebar-bottom{border-top-color:var(--line);padding-top:16px}.avatar{background:var(--sand);color:#725b35}
  .main{min-width:0}.topbar{height:64px;background:transparent;padding:0 32px;border-bottom:0;gap:16px}
  .breadcrumb{font-size:13px;gap:12px}.breadcrumb b{font-weight:600}
  .top-right{gap:12px;margin-left:auto}.top-right .badge{background:white;border-color:var(--line)}
  .content{max-width:1520px;padding:16px 32px 48px}
  .shell[data-section=classes],.shell[data-section=generator],.shell[data-section=school]{--context-surface:var(--sand)}
  .shell[data-section=scanner],.shell[data-section=results],.shell[data-section=runs]{--context-surface:var(--sky)}
  .shell[data-section=generator]{--teal:#655786;--teal-dark:#4e416e;--mint:#eee8f5;--context-surface:#eee6f3bf}
  .page-head{background:var(--context-surface);border:1px solid #ffffffb3;border-radius:24px;padding:24px;margin-bottom:20px;align-items:center}
  .page-head h1{font-size:clamp(26px,2.5vw,32px);font-weight:650;line-height:1.2;margin-bottom:0;overflow-wrap:anywhere}
  .page-head p{font-size:15px!important;line-height:1.6;max-width:700px;margin-top:10px}
  .page-head .actions{flex-shrink:0;flex-wrap:wrap}
  .shell[data-section=overview]>.main>.content>.page-head{background:transparent;border:0;padding:8px 0 4px;border-radius:0}
  .shell[data-section=overview] .page-head h1{font-size:30px}
  .panel,.class-card,.question-card,.settings-card,.report-work-card,.report-person-card{border-color:var(--line);border-radius:24px;box-shadow:none}
  .panel,.class-card,.settings-card,.report-work-card,.report-person-card{background:var(--surface);box-shadow:0 8px 32px #39335d04}
  .question-card,.editor-card{background:#fffffff2}
  .panel-title{padding:24px}.panel-title h2{font-size:20px}.platform-panel{padding:28px;margin-bottom:24px}
  .platform-panel h2{font-size:23px;margin-bottom:20px}.platform-panel p{font-size:15px}
  .platform-columns,.library-grid,.settings-grid,.editor-grid{gap:24px}
  .generator-layout:has(.generator-help[hidden]){grid-template-columns:minmax(0,1fr)}
  .ai-provider-links{gap:10px;margin:14px 0}.ai-provider{min-height:44px;border-color:#c8bfd9;background:#ffffffb3;color:#51436c}
  #ai-exchange{border-radius:16px}
  .ai-workflow{margin-top:24px;padding-top:24px;border-top:1px solid var(--line);position:relative;border-radius:16px}
  .ai-workflow h3{margin-bottom:12px}.ai-workflow p{line-height:1.65}
  .ai-workflow [data-ai-prepared]>h3{margin-top:26px}.ai-workflow details{margin:16px 0}
  .ai-workflow summary.btn{display:inline-flex;width:fit-content;border:1px solid #c8bfd9;background:#ffffffb3}
  .ai-workflow [data-ai-preview]{margin-top:24px}
  .run-control-cell{white-space:nowrap}.run-control-signal{gap:7px;border-color:#d5b568;background:#fff7e6;color:#78541f}
  .run-control-signal svg{width:18px;height:18px;flex:none}.run-participant-status,.run-participant-actions{white-space:nowrap}
  .platform-list-row{padding:18px 0;gap:16px}.platform-list-row>div{min-width:0;overflow-wrap:anywhere}.platform-list-row b{font-size:15px;line-height:1.55}.platform-list-row small{font-size:13px;color:var(--muted)}
  .field label,.field-label{font-size:14px}.field input,.field select,.field textarea{border-radius:12px;border-color:#cdd3dc;background:#ffffffeb;font-size:16px;min-height:46px;padding:12px 14px;line-height:1.5}
  .field small{font-size:13px;color:var(--muted)}.field textarea{resize:vertical}
  .shell .search-wrap input,.test-classification-filters select{border-radius:12px;border-color:var(--line);font-size:16px;min-height:46px}
  .tabs{border-radius:12px;background:var(--bg);padding:4px}.tab-button{border-radius:9px;min-height:44px}
  .tab-button.selected{box-shadow:none;background:#fff;color:var(--teal-dark);font-weight:600}
  .test-list-table th{background:#f7f9f5;padding-top:16px;padding-bottom:16px}.test-list-table td{padding-top:22px;padding-bottom:22px}
  .test-symbol{border-radius:12px;background:var(--mint);color:var(--teal)}.test-more summary{border-radius:12px}
  .test-more-actions{border-radius:16px;padding:8px}.test-more-actions button{border-radius:10px}
  .report-summary-cards>div{border-radius:20px;background:white;border-color:var(--line)}
  .report-filter-panel,.curriculum-compact details{border-radius:16px}.report-filter-panel>summary,.curriculum-compact details>summary{border-radius:16px}
  .report-filters{grid-template-columns:minmax(0,2fr) repeat(4,minmax(0,1fr))}
  .report-filters>.field,.report-filters input,.report-filters select{min-width:0;max-width:100%;width:100%}
  .report-filters input[type=date]{min-inline-size:0}
  .report-card-stats>div{border-radius:14px;background:var(--bg);padding:12px}
  .report-work-card,.report-person-card{padding:24px}.results-mobile{gap:16px}
  .work-nav{gap:12px}.run-code{background:var(--sky);border-radius:16px}
  .notice,.aside-note,.source-fragment,.answer-review-guide,.answer-reviewed-group{border-radius:16px}
  .notice{background:var(--mint);color:var(--ink)}.notice.amber{background:#fbf0d9;color:#76531c}
  .editor-card{border-radius:20px;padding:24px}.editor-panel{padding:28px}.editor-help{border-radius:24px}
  .question-head span{border-radius:8px}.question-card h3{font-size:18px}
  .class-card{padding:28px}.class-card h2{font-size:32px}.class-card p,.student-list{font-size:15px}
  .settings-card{padding:28px}.settings-card h2{font-size:24px}.settings-card p{font-size:15px}
  .generation-mode{background:var(--bg);border-radius:16px;padding:6px;gap:6px}.generation-mode .btn{border-radius:11px;border-color:transparent;background:transparent}.generation-mode .btn.primary{background:var(--teal);color:white}
  .import-preview-summary{border-radius:16px;background:var(--mint)}
  dialog{border:1px solid #fff;border-radius:24px;padding:28px;background:#fcfbfff5;box-shadow:0 24px 80px #4b365333}
  dialog,dialog .packet-preview{scrollbar-width:thin;scrollbar-color:#b5a8c7 transparent}
  @supports selector(::-webkit-scrollbar){dialog,dialog .packet-preview{scrollbar-width:auto;scrollbar-color:auto}}
  :is(dialog,dialog .packet-preview)::-webkit-scrollbar{width:10px;height:10px}
  :is(dialog,dialog .packet-preview)::-webkit-scrollbar-track{background:transparent;border-radius:999px;margin:16px 0}
  :is(dialog,dialog .packet-preview)::-webkit-scrollbar-thumb{background:#b5a8c7;border:2px solid transparent;background-clip:padding-box;border-radius:999px}
  :is(dialog,dialog .packet-preview)::-webkit-scrollbar-button{display:none}
  :is(dialog,dialog .packet-preview)::-webkit-scrollbar-corner{background:transparent}
  dialog::backdrop{background:#3e345b40;backdrop-filter:blur(4px)}
  dialog[open]{animation:surface-arrive 220ms var(--motion-ease) both}
  .modal-header h2{font-size:25px}.modal-header .btn{min-width:44px;min-height:44px}
  :is(.platform-panel,#ai-exchange,.auth-form)[data-working]{position:relative;isolation:isolate}
  :is(.platform-panel,#ai-exchange,.auth-form)[data-working]::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;border-radius:inherit;border:2px solid #e8b4d9;background:radial-gradient(ellipse at 100% 0,#ecb6db40,transparent 60%),radial-gradient(ellipse at 0 100%,#c7baed40,transparent 65%);box-shadow:inset 0 0 28px #e6acdc33;opacity:0;transition:opacity 200ms var(--motion-ease)}
  :is(.platform-panel,#ai-exchange,.auth-form)[data-working=true]::after{opacity:1;transition-duration:550ms;transition-delay:400ms}
  .more-navigation .side-link{border-radius:14px;background:var(--bg);min-height:52px}
  .more-account{padding-top:20px}.more-account .btn{border-radius:12px}
  #toast{border-radius:16px;background:var(--ink)}

  .overview-bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;align-items:stretch}
  .bento-tile{min-width:0;border:1px solid #ffffffd9;background:var(--surface);border-radius:24px;padding:24px;overflow-wrap:anywhere;box-shadow:0 8px 32px #39335d05;animation:surface-arrive 240ms var(--motion-ease) both}
  .overview-bento>.bento-tile:nth-child(2){animation-delay:35ms}.overview-bento>.bento-tile:nth-child(3){animation-delay:70ms}.overview-bento>.bento-tile:nth-child(4){animation-delay:105ms}.overview-bento>.bento-tile:nth-child(n+5){animation-delay:140ms}
  .tone-mint{background:var(--mint);border-color:transparent}.tone-blue{background:var(--sky);border-color:transparent}.tone-sand{background:var(--sand);border-color:transparent}
  .bento-create{grid-column:span 8;display:flex;flex-direction:column;align-items:flex-start;min-height:220px}
  .bento-scan{grid-column:span 4;display:flex;flex-direction:column;align-items:flex-start}
  .bento-continue{grid-column:span 7}.bento-summary{grid-column:span 5}.bento-recent-tests,.bento-recent-runs{grid-column:span 6}
  .tile-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin-bottom:18px;flex-wrap:wrap}
  .tile-topline h2{margin:0}
  .bento-tile h2{font-size:23px;line-height:1.3;margin:0 0 12px;font-weight:650}
  .bento-action-heading{display:flex;align-items:center;gap:12px}
  .bento-action-icon{display:grid;place-items:center;flex:none;width:44px;height:44px;border:1px solid #ffffffc9;border-radius:14px;background:#ffffff80;color:var(--teal)}
  .bento-action-icon svg{width:24px;height:24px}
  .bento-tile p{font-size:15px;line-height:1.65;color:var(--muted);margin:0 0 20px;max-width:530px}
  .bento-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:auto}
  .bento-scan .btn{margin-top:auto}
  .pending-action{border-radius:16px;background:var(--bg);border-color:transparent;min-height:56px;line-height:1.5;transition:background-color 180ms var(--motion-ease)}
  .pending-action>span:not(.badge){min-width:0;overflow-wrap:anywhere}
  .pending-action>.badge{flex:none;white-space:nowrap}
  .bento-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0 20px}.bento-metrics>div{display:flex;flex-direction:column-reverse;gap:4px}
  .bento-metrics dt{font-size:13px;color:var(--muted);line-height:1.5}.bento-metrics dd{font-size:34px;font-weight:650;line-height:1.1;margin:0;letter-spacing:-1px;font-variant-numeric:tabular-nums}
  .bento-tile .bento-metric-note{font-size:12px;margin:0;line-height:1.6}
  .bento-recent-tests .platform-list-row:last-child,.bento-recent-runs .platform-list-row:last-child{padding-bottom:0}.bento-recent-tests .tile-topline,.bento-recent-runs .tile-topline{margin-bottom:8px}
  .bento-recent-tests .btn,.bento-recent-runs .btn{font-size:14px;padding:10px 14px}

  .dots-landing{background:transparent;min-height:100svh;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}.dots-landing>nav{max-width:1328px;height:96px;padding:0 24px}.dots-landing .nav-links{gap:28px}
  .landing-bento{max-width:1328px;padding:16px 24px 40px;margin:auto;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:20px}
  .landing-intro{grid-column:span 7;padding:44px;min-height:440px;display:flex;flex-direction:column;align-items:flex-start}
  .landing-intro h1{font-size:clamp(42px,5.5vw,72px);line-height:1.05;letter-spacing:-2.6px;margin:24px 0}.landing-intro p{font-size:17px;max-width:470px}.landing-intro .btn{margin-top:auto}
  .landing-invite{font-size:12px;color:var(--muted);margin-top:16px}.landing-scan{grid-column:span 5;display:flex;flex-direction:column;padding:36px}
  .landing-scan h2{font-size:32px;margin-top:24px}.tile-symbol .icon{width:36px;height:36px;color:#44647e}.landing-scan .eyebrow{margin-top:24px}
  .landing-scan-demo{display:flex;align-items:center;gap:16px;margin-top:auto;padding-top:20px}.landing-scan-demo>span{width:60px;height:70px;border:1px solid #b6c7d3;border-radius:14px;background:#ffffff70;display:grid;place-items:center}.landing-scan-demo>span .icon{width:28px;height:28px}.landing-scan-demo>.demo-check{width:42px;height:42px;border-radius:50%;background:#fff;border:0;color:var(--teal)}
  .landing-material{grid-column:span 5;padding:36px}.landing-class{grid-column:span 7;padding:36px}.landing-material h2,.landing-class h2{font-size:30px;margin-top:24px}.landing-tags{display:flex;flex-wrap:wrap;gap:8px}.landing-tags span{font-size:13px;padding:8px 12px;border-radius:10px;background:var(--bg)}
  .dots-landing footer{max-width:1328px;padding:24px;font-size:13px}

  .dots-auth{max-width:1600px;margin:auto;min-height:100svh;padding:calc(20px + env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px));gap:20px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);background:transparent}
  .dots-auth .auth-aside{border-radius:24px;background:var(--mint);padding:40px;gap:40px}.dots-auth .auth-aside h1{font-size:clamp(42px,5vw,72px);letter-spacing:-2.2px;line-height:1.08;max-width:none;margin:24px 0}.dots-auth .auth-aside p{color:var(--muted);font-size:17px;max-width:410px;line-height:1.7}
  .dots-auth .auth-aside>small{color:var(--muted);font-size:13px}.dots-auth .auth-form-wrap{border:1px solid #ffffffd9;border-radius:24px;background:var(--surface);padding:40px}.dots-auth .auth-form{max-width:400px}.dots-auth .auth-form h2{font-size:34px;margin:16px 0 12px}.dots-auth .auth-form>p{font-size:15px;line-height:1.7;margin-bottom:28px}.dots-auth .auth-switch{font-size:14px;line-height:1.7}.dots-auth .btn.full{min-height:50px}.dots-auth .auth-switch a{font-weight:600;text-decoration:underline;text-underline-offset:3px}
  .auth-mini-bento{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:32px;max-width:380px}.auth-mini-bento>span{padding:20px 18px;background:#ffffff80;border:1px solid #d4e2d6;border-radius:18px;display:flex;align-items:center;gap:12px;font-size:15px}.auth-mini-bento>span:last-child{grid-column:1/-1;background:var(--sand);border-color:transparent}
  .yandex-signin{justify-content:center;background:var(--surface);color:var(--ink);border:1px solid var(--line);gap:12px}.yandex-letter{display:grid;place-items:center;width:25px;height:25px;flex:none;background:#f43;color:white;border-radius:50%;font-size:18px;font-weight:700;line-height:1}.auth-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--muted);font-size:13px}.auth-divider::before,.auth-divider::after{content:"";height:1px;flex:1;background:var(--line)}.dots-auth .auth-notice-error{color:#963f38;background:#fff1ed}

  .participation-page{max-width:820px;padding:calc(28px + env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) calc(64px + env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}.participation-page>.brand{margin:4px 0 16px}.participation-login{border-radius:24px;padding:32px;margin-top:24px;max-width:520px}.participation-login h1{font-size:32px;line-height:1.15}.participation-login .muted{font-size:15px}.participation-login .field{margin-bottom:22px}.participation-login .btn.full{min-height:50px}
  .participation-header{top:calc(8px + env(safe-area-inset-top,0px));border-radius:20px;background:var(--mint);border-color:transparent;padding:20px 24px}.participation-header b{font-size:18px}.participation-question{border-radius:24px;padding:28px;margin-bottom:20px}.participation-question h2{font-size:21px;line-height:1.6;letter-spacing:0}.student-option{border-radius:14px;padding:16px;min-height:56px;transition:background-color 180ms var(--motion-ease),border-color 180ms var(--motion-ease)}.student-option:has(input:checked){background:var(--mint);border-color:var(--teal)}
  .participation-rules,.participation-instructions{border-radius:18px;padding:20px}.participation-footer{border-radius:20px;background:var(--sky);padding:20px;margin-top:20px}.participation-footer p{font-size:14px;margin:0}.participation-complete{border-radius:24px;padding:32px}.participation-result-score{border-radius:20px;background:var(--mint);padding:24px}.participation-review-question{border-radius:18px}
}
@media screen and (max-width:1400px){
  .report-filters{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media screen and (max-width:1200px){
  .content{padding:16px 28px 48px}.topbar{padding:0 28px}.bento-create{grid-column:span 7}.bento-scan{grid-column:span 5}.bento-tile{padding:24px}.page-head{padding:24px}.page-head .actions{flex-shrink:1}.topbar-date{display:none}
}
@media screen and (max-width:1100px){
  .test-list-table tr{border-radius:20px;padding:22px}.test-list-table td{padding:0}.test-list-wrap{padding:0 16px 8px}.bento-recent-tests,.bento-recent-runs{grid-column:span 12}.bento-continue{grid-column:span 7}.bento-summary{grid-column:span 5}.bento-recent-tests .platform-list-row,.bento-recent-runs .platform-list-row{flex-wrap:nowrap}.bento-recent-tests .platform-list-row>div,.bento-recent-runs .platform-list-row>div{flex:1}
}
@media screen and (max-width:850px){
  .shell{display:block;min-height:100dvh}.shell>.sidebar{display:none}.shell>.main{display:block}.shell .topbar{height:calc(64px + env(safe-area-inset-top,0px));padding:calc(12px + env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px)) 12px max(18px,env(safe-area-inset-left,0px));background:transparent}.shell .content{max-width:850px;padding:16px max(18px,env(safe-area-inset-right,0px)) calc(100px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px))}
  .mobile-home{font-size:25px;gap:8px;letter-spacing:-.8px}.mobile-home .brand-mark{width:36px;height:32px}
  .mobile-nav{padding-left:max(8px,env(safe-area-inset-left,0px));padding-right:max(8px,env(safe-area-inset-right,0px));padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));border-top-color:var(--line);box-shadow:0 -8px 30px #5d3d7810;background:#ffffffcc;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.mobile-nav-link{border-radius:14px}.mobile-nav-link.active{background:var(--context-surface);color:var(--teal-dark)}
  .overview-bento{gap:16px}.bento-create{grid-column:span 7}.bento-scan{grid-column:span 5}.bento-continue,.bento-summary{grid-column:span 6}.bento-tile{padding:24px}
  .dots-auth{grid-template-columns:1fr;padding:calc(16px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));gap:16px;display:grid}.dots-auth .auth-aside{padding:28px;gap:24px}.dots-auth .auth-aside h1{font-size:44px}.dots-auth .auth-form-wrap{padding:32px}.auth-mini-bento{display:none}.dots-auth .auth-aside p{max-width:560px}
  .landing-intro{padding:32px}.landing-scan,.landing-material,.landing-class{padding:28px}.landing-intro h1{font-size:48px}.landing-scan h2{font-size:28px}
}
@media screen and (max-width:650px){
  .report-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .report-filters>.field:first-child{grid-column:1/-1}
  .page-head{padding:24px;gap:18px;align-items:flex-start}.page-head h1{font-size:29px}.page-head p{font-size:14px!important}.page-head .actions{width:100%;gap:8px}.page-head .actions .btn{flex:1;white-space:normal}.shell[data-section=overview]>.main>.content>.page-head{padding:4px 0 0}.shell[data-section=overview] .page-head h1{font-size:30px}
  .overview-bento{grid-template-columns:minmax(0,1fr);gap:16px}.overview-bento>.bento-tile{grid-column:auto;padding:24px}.bento-create,.bento-scan{min-height:190px}.bento-actions{width:100%}.bento-actions>.btn{flex:1;min-width:110px}.bento-tile h2{font-size:23px}
  .bento-metrics{gap:22px;margin-top:20px}.bento-metrics dd{font-size:36px}.tile-topline{gap:8px}.pending-action{padding:14px;gap:10px;flex-wrap:wrap}.pending-action>span:not(.badge){flex:1 1 150px}.pending-action>b{flex:none}
  .platform-panel,.class-card,.settings-card,.editor-panel,.question-card,.report-work-card,.report-person-card{padding:24px}.platform-list-row{flex-wrap:wrap}.bento-recent-tests .platform-list-row,.bento-recent-runs .platform-list-row{align-items:flex-start;gap:12px}.bento-recent-tests .platform-list-row>div,.bento-recent-runs .platform-list-row>div{flex:1 1 160px}.bento-recent-tests .platform-list-row>.btn,.bento-recent-runs .platform-list-row>.btn{flex:none}
  .test-list-wrap{padding:0 12px 4px}.test-list-table tr{padding:18px;border-radius:18px}.test-row-actions .btn{font-size:14px;padding:10px 8px}.editor-card{padding:18px}.editor-panel{padding:20px}.generation-mode{padding:4px;gap:4px}
  dialog{padding:24px;max-height:calc(100svh - 32px)}.modal-header h2{font-size:23px}.more-navigation{gap:8px}.more-navigation .side-link{font-size:14px;gap:9px;padding:12px 10px}.more-account{margin-top:20px}
  .dots-landing>nav{height:84px;padding:0 18px}.dots-landing .nav-links>a:not(.btn){display:none}.dots-landing .nav-links .btn{font-size:14px;padding:10px 14px}.landing-bento{grid-template-columns:minmax(0,1fr);padding:4px 18px 24px;gap:16px}.landing-bento>.bento-tile{grid-column:auto;padding:28px}.landing-intro{min-height:400px}.landing-intro h1{font-size:48px;letter-spacing:-1.8px;margin-top:20px}.landing-intro p{font-size:16px}.landing-scan{min-height:360px}.landing-scan h2{font-size:30px}.landing-material h2,.landing-class h2{font-size:29px}.dots-landing footer{padding:24px 18px;gap:10px}
  .dots-auth{padding:calc(12px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));gap:12px}.dots-auth .auth-aside{padding:24px;gap:0}.dots-auth .auth-aside h1{font-size:34px;letter-spacing:-1.2px;margin:20px 0 0}.dots-auth .auth-aside p,.dots-auth .auth-aside>small,.dots-auth .auth-story>.eyebrow{display:none}.dots-auth .auth-form-wrap{padding:28px 24px}.dots-auth .auth-form h2{font-size:29px}.dots-auth .auth-form>p{margin-bottom:24px}.dots-auth .auth-form>.eyebrow{font-size:10px}
  .participation-page{padding:calc(20px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}.participation-login{margin:16px auto;padding:26px 22px}.participation-login h1{font-size:29px}.participation-header{padding:18px;gap:12px}.participation-header b{font-size:16px}.participation-question{padding:24px 20px}.participation-question h2{font-size:19px}.participation-complete{padding:26px 22px}.participation-footer{padding:20px}.participation-footer .btn{width:100%}
}
@media screen and (max-width:420px){
  .report-filters{grid-template-columns:minmax(0,1fr)}
}
@media screen and (max-width:360px){
  .shell .content{padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}.overview-bento>.bento-tile{padding:22px}.bento-actions{flex-direction:column}.bento-recent-tests .platform-list-row,.bento-recent-runs .platform-list-row{flex-wrap:wrap}.bento-recent-tests .platform-list-row>.btn,.bento-recent-runs .platform-list-row>.btn{width:100%}.more-navigation{grid-template-columns:1fr}.dots-auth .auth-form-wrap{padding:26px 20px}.landing-intro h1{font-size:42px}
}
@media screen and (hover:hover) and (pointer:fine){
  .btn:not(:disabled):hover{border-color:#aec3b5;transform:none}.btn.primary:not(:disabled):hover{background:var(--teal-dark);border-color:var(--teal-dark)}
  .btn:not(:disabled):not(:active):not(:focus-visible):hover{transform:translateY(-1px)}
  .pending-action:hover{background:var(--mint)}
}
@keyframes dots-arrive{0%{transform:translateY(0)}40%{transform:translateY(-6px)}100%{transform:translateY(0)}}
@keyframes aura-drift{from{transform:translate3d(-3%,-2%,0) scale(1)}to{transform:translate3d(4%,3%,0) scale(1.05)}}
@keyframes aura-return{from{transform:translate3d(3%,2%,0) scale(1.04);opacity:.65}to{transform:translate3d(-4%,-2%,0) scale(1);opacity:1}}
@keyframes surface-arrive{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
  .brand-dot,.bento-tile,.page-head{animation:none!important;transform:none!important;opacity:1!important}
  #app::before,#app::after,dialog[open]{animation:none!important;transform:none!important}
  :is(.platform-panel,#ai-exchange,.auth-form)[data-working]::after{transition-duration:120ms!important}
  .btn,.student-option,.pending-action{transition-property:background-color,border-color!important}.btn:active{transform:none!important}
}

/* Journal: one compact surface; only the results matrix scrolls sideways. */
@media screen{
  .journal-home-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 24px}
  .journal-home-head>div{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-width:0}
  .journal-home-head h1{margin:0;font-size:30px;line-height:1.2}.journal-home-head .btn{flex:none}
  .journal-home-count{color:var(--muted);font-size:15px}
  .journal-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:20px}
  .journal-class-card{min-width:0;border:1px solid var(--line);border-radius:22px;background:var(--surface);overflow:hidden}
  .journal-class-open{display:flex;flex-direction:column;align-items:flex-start;gap:12px;width:100%;min-height:164px;padding:24px;border:0;border-radius:inherit;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color 120ms var(--motion-ease)}
  .journal-class-open:focus-visible{outline-offset:-4px}.journal-class-title{font-size:28px;font-weight:650;line-height:1.2;overflow-wrap:anywhere}
  .journal-class-meta{font-size:14px;color:var(--muted);line-height:1.5}
  .journal-pending-count,.journal-row-pending{display:inline-flex;align-items:center;gap:4px;width:fit-content;border-radius:7px;background:#fff2dc;color:#795721;font-size:12px;font-weight:500;line-height:1.4;padding:3px 7px}
  .journal-pending-count{margin-top:auto}
  .journal-header{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:16px;margin:8px 0 20px}
  .journal-header>div{min-width:0}.journal-header>.btn{padding:10px;min-width:44px}
  .journal-header>.journal-back{display:grid;place-items:center;width:44px;min-height:44px;padding:8px;border:1px solid #86b6a3;border-radius:14px;background:#d9eee5;color:#205a47}
  .journal-back svg{width:24px;height:24px;stroke-width:2.4}
  .journal-header h1{font-size:28px;line-height:1.2;margin:0;overflow-wrap:anywhere}
  .journal-header p,.journal-header small,.journal-subtitle{display:block;margin:5px 0 0;font-size:14px;color:var(--muted);line-height:1.4}
  .journal-header-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px}
  .journal-header-actions select{width:auto;max-width:180px;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:12px;padding:9px 32px 9px 12px;background:#ffffffeb;color:var(--ink);font:inherit;font-size:16px}
  .journal-tabs{display:flex;gap:24px;margin-bottom:20px;padding:0;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:thin}
  .journal-tabs .tab-button{flex:none;min-height:48px;padding:12px 4px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);font-size:15px;white-space:nowrap;box-shadow:none}
  .journal-tabs .tab-button.selected,.journal-tabs .tab-button[aria-selected=true]{border-bottom-color:var(--teal);background:transparent;color:var(--teal-dark);font-weight:650}
  .journal-panel{padding:20px;min-width:0;overflow:visible}
  .journal-tools{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:12px 20px;margin-bottom:24px}
  .journal-tools>.field,.journal-subject{min-width:0;margin:0}.journal-tools>.btn{margin-right:auto}
  .journal-month{display:grid;grid-template-columns:44px minmax(0,168px) 44px auto;align-items:center;gap:6px;min-width:0}
  .journal-month input{min-inline-size:0;max-width:100%;width:100%;min-height:44px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#ffffffeb;color:var(--ink);font:inherit;font-size:16px;line-height:1.5}
  .journal-month .btn{padding:6px;min-width:44px;font-size:23px}
  .journal-month [data-journal-today]{padding:9px 12px;font-size:14px;line-height:1.4}
  .journal-subject{width:240px;max-width:100%;margin-left:auto}.journal-subject select{min-inline-size:0;max-width:100%;width:100%;min-height:44px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#ffffffeb;color:var(--ink);font:inherit;font-size:16px;line-height:1.5}
  .journal-roster-toolbar{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,220px) minmax(130px,170px) auto;align-items:center;gap:12px;margin-bottom:16px}
  .journal-roster-toolbar>*{min-width:0}.journal-roster-toolbar h2{font-size:16px;line-height:1.4;margin:0}
  .journal-search,.journal-search input,.journal-sort,.journal-sort select{min-inline-size:0;min-width:0;max-width:100%;width:100%;min-height:44px;font-size:16px}
  input.journal-search,select.journal-sort,.journal-search input,.journal-sort select{padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#ffffffeb;color:var(--ink);font-family:inherit;line-height:1.5}
  .journal-pending-filter{white-space:normal;line-height:1.35}.journal-pending-filter[aria-pressed=true]{border-color:#d7b779;background:#fff2dc;color:#795721}
  .journal-scroll{--journal-name-width:200px;--journal-day-width:76px;--journal-mean-width:64px;max-width:100%;max-height:70svh;overflow:auto;border:1px solid var(--line);border-radius:16px;overscroll-behavior:contain;isolation:isolate;scrollbar-width:thin;scrollbar-color:#b5acbf transparent;container-type:inline-size}
  .journal-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}
  .journal-table th,.journal-table td{width:var(--journal-day-width);min-width:var(--journal-day-width);max-width:var(--journal-day-width);height:52px;text-align:center;padding:4px 6px;border-top:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);font-size:14px;vertical-align:middle}
  .journal-table .journal-multi-day{--journal-day-width:112px}
  .journal-table thead th{position:sticky;top:0;z-index:3;background:#f4f2f8;color:var(--muted);font-weight:500}
  .journal-table tr:not(.journal-person-details)>:first-child{position:sticky;left:0;z-index:2;width:var(--journal-name-width);min-width:var(--journal-name-width);max-width:var(--journal-name-width);background:#fcfbff;text-align:left;white-space:normal;padding-left:12px}
  .journal-table tr:not(.journal-person-details)>:last-child{position:sticky;right:0;z-index:2;width:var(--journal-mean-width);min-width:var(--journal-mean-width);max-width:var(--journal-mean-width);background:#f5f5f9;border-right:0;border-left:1px solid var(--line)}
  .journal-table thead tr:not(.journal-person-details)>:first-child,.journal-table thead tr:not(.journal-person-details)>:last-child{z-index:4;background:#f4f2f8}
  .journal-table tbody tr:last-child>*{border-bottom:0}
  .journal-day-head{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-width:44px;min-height:44px;border:0;border-radius:10px;padding:4px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}
  .journal-day-head small,.journal-day-head>span{font-size:11px;line-height:1.2;color:var(--muted);font-weight:400}.journal-day-head b{font-size:18px;line-height:1.2;font-weight:650}.journal-day-head.is-today{background:var(--mint);color:var(--teal-dark)}
  .journal-person-toggle{display:flex;align-items:center;gap:7px;width:100%;min-height:44px;border:0;border-radius:8px;padding:4px 0;background:transparent;color:var(--ink);font:inherit;font-size:14px;text-align:left;cursor:pointer}
  .journal-person-toggle::before{content:"";display:block;flex:none;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg)}
  .journal-person-toggle[data-open=true]::before,.journal-person-toggle[aria-expanded=true]::before{transform:rotate(45deg)}
  .journal-person-name{min-width:0;overflow-wrap:anywhere;line-height:1.4;font-weight:500}.journal-person-name>small{display:block;color:var(--muted);font-size:11px;font-weight:400}
  .journal-row-pending{flex:none;font-size:11px;padding:2px 5px}.journal-table tbody th>.journal-row-pending{margin:0 0 5px 13px}
  .journal-day-results{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:4px;min-width:0;width:100%}
  .journal-result{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:44px;max-width:100%;min-height:44px;padding:4px 6px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--ink);font:inherit;line-height:1.25;cursor:pointer;vertical-align:middle}
  .journal-result+.journal-result{margin-top:4px}.journal-day-results>.journal-result{width:100%;min-width:0;margin-top:0;padding:4px 6px}
  .journal-result>b{font-size:14px;font-weight:650;overflow-wrap:anywhere}.journal-result>span,.journal-result>small{max-width:100%;font-size:11px;color:var(--muted);line-height:1.25;white-space:normal;overflow-wrap:break-word}.journal-result>.journal-grade{font-size:22px}
  .journal-pending{background:#fff5e5;border-color:#e8ca94}.journal-pending small,.journal-pending>span{color:#795721}
  .journal-grade[data-mark="2"]{color:#a1423d}.journal-grade[data-mark="3"]{color:#795721}.journal-grade[data-mark="4"]{color:#405e95}.journal-grade[data-mark="5"]{color:#315f57}
  .journal-average{font-size:17px;font-weight:650;line-height:1.4}
  .journal-table .journal-person-details>td{position:static;inset:auto;z-index:auto;width:auto;min-width:0;max-width:none;height:auto;padding:0;border-right:0;border-left:0;background:#f5f3f9;text-align:left}
  .journal-person-work-list{position:sticky;left:0;display:grid;gap:0;width:min(720px,100cqi);max-width:100%;padding:8px 16px}
  .journal-person-work{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}
  .journal-person-work:last-child{border-bottom:0}.journal-person-work>div{min-width:0}.journal-person-work b,.journal-person-work strong{display:block;font-size:14px;font-weight:550;line-height:1.5;overflow-wrap:anywhere}.journal-person-work small{display:block;font-size:12px;line-height:1.5;color:var(--muted)}.journal-person-work .journal-result{flex:none}
  .journal-work-list{display:grid;gap:12px}.journal-work-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:20px;border:1px solid var(--line);border-radius:16px;background:#ffffffb3}
  .journal-work-card>header{min-width:0}.journal-work-card h2,.journal-work-card h3{font-size:17px;line-height:1.45;margin:0;overflow-wrap:anywhere}.journal-work-card p,.journal-work-card time{font-size:13px;line-height:1.5;color:var(--muted);margin:5px 0 0}.journal-work-card>.btn{grid-column:2;grid-row:1/span 2}
  .journal-work-stats{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;line-height:1.5;color:var(--muted)}.journal-work-stats b{font-weight:600;color:var(--ink)}
  .journal-roster-list{max-width:100%;overflow-x:auto}.journal-roster-list table{width:100%;font-size:14px}.journal-roster-list th,.journal-roster-list td{padding:12px;text-align:left;white-space:normal;overflow-wrap:anywhere}.journal-roster-list th{font-size:13px}.journal-roster-list td:last-child{text-align:right}
  .journal-empty{padding:28px 8px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.journal-empty h2{font-size:20px;line-height:1.4;margin:0}.journal-empty p{font-size:14px;line-height:1.6;color:var(--muted);margin:0;max-width:540px}
  .journal-loading{min-height:80px;display:flex;align-items:center;padding:16px 0;font-size:14px;color:var(--muted)}.journal-caption{margin:12px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}
  .journal-class-open:active,.journal-person-toggle:active,.journal-day-head:active,.journal-result:active{background:var(--mint)}.journal-result.journal-pending:active{background:#ffefd3}.journal-back:active{background:#c7e5d7}
}
@media screen and (max-width:1100px){
  .journal-roster-toolbar{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.journal-roster-toolbar h2{grid-column:1/-1}
  .journal-header{grid-template-columns:44px minmax(0,1fr)}.journal-header-actions{grid-column:1/-1}
}
@media screen and (max-width:650px){
  .journal-home-head{align-items:flex-start}.journal-home-head h1{font-size:27px}.journal-home-head .btn{padding:10px 12px}.journal-class-grid{gap:12px}.journal-class-open{min-height:144px;padding:20px}
  .journal-header{gap:12px;margin-bottom:16px}.journal-header h1{font-size:25px}.journal-header-actions{justify-content:flex-start}.journal-header-actions select{flex:1;max-width:none}.journal-header-actions>.btn{flex:none}
  .journal-tabs{gap:20px;margin-bottom:16px}.journal-panel{padding:12px}.journal-tools{gap:10px;margin-bottom:20px}.journal-month{flex:1;grid-template-columns:44px minmax(0,1fr) 44px auto}.journal-tools>.btn{margin-right:0}.journal-subject{width:100%;margin-left:0}
  .journal-roster-toolbar{grid-template-columns:minmax(0,1fr) auto;gap:10px}.journal-roster-toolbar h2,.journal-search{grid-column:1/-1}.journal-pending-filter{font-size:13px;padding:10px}
  .journal-scroll{--journal-name-width:130px;border-radius:12px;max-height:65svh}.journal-table tr:not(.journal-person-details)>:first-child{padding-left:8px}.journal-person-toggle{font-size:13px;gap:6px}.journal-person-work-list{padding:6px 12px}.journal-person-work{gap:10px}
  .journal-work-card{grid-template-columns:minmax(0,1fr);gap:12px;padding:16px}.journal-work-card>.btn{grid-column:auto;grid-row:auto;justify-self:start}.journal-work-stats{gap:6px 14px}
  .journal-roster-list th,.journal-roster-list td{padding:10px 6px}.journal-empty{padding:20px 4px}
}
@media screen and (max-width:480px){
  .journal-month{grid-template-columns:44px minmax(0,1fr) 44px;width:100%}.journal-month [data-journal-today]{grid-column:1/-1}
}
@media screen and (max-width:360px){
  .journal-home-head{flex-wrap:wrap}.journal-home-head .btn{width:100%}.journal-tools>.btn{width:100%}.journal-header-actions{gap:8px}.journal-header-actions>.btn{padding:10px 12px}
}
@media screen and (hover:hover) and (pointer:fine){
  .journal-class-open:hover,.journal-person-toggle:hover,.journal-day-head:hover,.journal-result:hover{background:#eee8f5}.journal-result.journal-pending:hover{background:#ffefd3}.journal-back:hover{background:#c7e5d7;border-color:#5e9d85}.journal-tabs .tab-button:not([aria-selected=true]):not(.selected):hover{color:var(--ink)}
}

/* Grading settings also belong to the test editor and material generator. */
@media screen{.form-row:has(#test-mark-three),.form-row:has(#gen-mark-three){grid-template-columns:repeat(3,minmax(0,1fr))}}
@media screen and (max-width:650px){.form-row:has(#test-mark-three),.form-row:has(#gen-mark-three){grid-template-columns:minmax(0,1fr)}}
