:root{--bg:#f7f5ef;--surface:#fffdf8;--surface-strong:#ffffff;--ink:#1d2623;--muted:#66726d;--line:#ddd7c8;--accent:#2f7d6d;--accent-strong:#205d52;--accent-soft:#dff0eb;--warn:#b05d18;--danger:#b33b35;--blue:#2e5f9e;--shadow:0 16px 42px rgba(31,39,35,0.1);--student-tabbar-content-height:58px;--student-tabbar-browser-bottom:0px;--student-tabbar-safe-bottom:max(env(safe-area-inset-bottom,0px),10px,var(--student-tabbar-browser-bottom));--student-tabbar-height:calc(var(--student-tabbar-content-height) + var(--student-tabbar-safe-bottom));--visual-viewport-bottom:0px}@media (display-mode:standalone){:root{--student-tabbar-safe-bottom:max(env(safe-area-inset-bottom,0px),18px)}}*{box-sizing:border-box}html{text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,sans-serif;letter-spacing:0;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0;cursor:pointer}textarea{resize:vertical}.app-shell{min-height:100vh}.topbar{background:rgba(255,253,248,.92);border-bottom:1px solid var(--line);gap:16px;justify-content:space-between;min-height:64px;padding:12px clamp(16px,4vw,40px);position:-webkit-sticky;position:sticky;top:0;z-index:10}.brand,.topbar{align-items:center;display:flex}.brand{gap:10px;font-weight:800;min-width:max-content}.brand-mark{align-items:center;background:var(--accent);border-radius:7px;color:white;display:inline-flex;height:34px;justify-content:center;width:34px}.nav{display:flex;flex-wrap:wrap;gap:8px}.link-button,.nav a,.nav button{background:transparent;border-radius:7px;color:var(--muted);min-height:40px;padding:9px 11px;white-space:nowrap}.link-button:hover,.nav a:hover,.nav button:hover{background:var(--accent-soft);color:var(--accent-strong)}.container{margin:0 auto;max-width:1180px;padding:28px clamp(16px,4vw,40px) 48px;width:100%}.narrow{max-width:720px}.notification-admin{max-width:920px}.page-title{margin:0 0 8px;font-size:34px;line-height:1.12;overflow-wrap:anywhere}.page-subtitle{color:var(--muted);margin:0 0 24px;line-height:1.7}.grid{display:grid;grid-gap:16px;gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:18px;min-width:0}.card h2,.card h3,.panel h2{margin:0 0 10px}.metric{color:var(--muted);font-size:14px}.metric strong{color:var(--ink);display:block;font-size:28px;margin-top:4px}.stack{display:grid;grid-gap:12px;gap:12px}.row{align-items:center;display:flex;gap:12px;justify-content:space-between}.row,.row>*{min-width:0}.form{display:grid;grid-gap:14px;gap:14px}.field{display:grid;grid-gap:6px;gap:6px}.field span{color:var(--muted);font-size:13px;font-weight:700}.input,.select,.textarea{background:var(--surface-strong);border:1px solid var(--line);border-radius:7px;color:var(--ink);min-height:44px;padding:11px 12px;width:100%}.textarea{min-height:108px}.question-textarea{min-height:164px}.notification-dry-run-list{display:grid;grid-gap:14px;gap:14px;margin-top:16px;min-width:0}.notification-dry-run-item{border-top:1px solid var(--line);display:grid;grid-gap:8px;gap:8px;min-width:0;padding-top:12px}.notification-stat-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));margin:0;min-width:0}.notification-stat{background:var(--surface-strong);border:1px solid var(--line);border-radius:7px;min-width:0;padding:8px 10px}.notification-stat dt{color:var(--muted);font-size:12px;font-weight:700;line-height:1.35}.notification-stat dd{color:var(--ink);font-size:18px;font-weight:800;line-height:1.2;margin:3px 0 0}.notification-table-wrap{max-width:100%;min-width:0;overflow-x:auto}.notification-run-table{border-collapse:collapse;font-size:13px;min-width:700px;table-layout:fixed;width:100%}.notification-run-table td,.notification-run-table th{border-top:1px solid var(--line);padding:8px 7px;text-align:left;vertical-align:top;overflow-wrap:anywhere}.notification-run-table th{border-top:0;color:var(--muted);font-size:12px;font-weight:800;line-height:1.3}.notification-run-table .numeric{text-align:right;white-space:nowrap;width:52px}.notification-detail-block{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.notification-detail-block summary{color:var(--ink);cursor:pointer;font-size:13px;font-weight:800}.notification-detail-table{border-collapse:collapse;font-size:12px;margin-top:8px;min-width:760px;table-layout:fixed;width:100%}.notification-detail-table td,.notification-detail-table th{border-top:1px solid var(--line);overflow-wrap:anywhere;padding:7px 6px;text-align:left;vertical-align:top}.notification-detail-table th{color:var(--muted);font-size:11px;font-weight:800}.notification-detail-table .numeric{text-align:right;white-space:nowrap;width:58px}.inline-code,.template-variable{background:var(--surface-strong);border:1px solid var(--line);border-radius:5px;color:var(--ink);display:inline-block;font-size:.92em;line-height:1.45;max-width:100%;overflow-wrap:anywhere;padding:1px 5px;vertical-align:baseline;word-break:break-word}.template-variable{margin:2px 6px 2px 0}.answer-mode-field{border:0;margin:0;padding:0}.answer-mode-field legend{color:var(--muted);font-size:13px;font-weight:700;margin-bottom:7px}.segmented-control{background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:4px;gap:4px;grid-template-columns:repeat(2,minmax(0,1fr));padding:4px}.segmented-control label{min-width:0}.segmented-control input{position:absolute;opacity:0;pointer-events:none}.segmented-control span{align-items:center;border-radius:6px;color:var(--muted);display:flex;font-size:14px;font-weight:800;justify-content:center;min-height:38px;padding:8px 10px;text-align:center}.segmented-control input:checked+span{background:var(--accent);color:#fff}.segmented-control input:focus-visible+span{outline:2px solid var(--accent-strong);outline-offset:2px}.segmented-control input:disabled+span{cursor:not-allowed;opacity:.55}.compact-select{max-width:220px}.button{align-items:center;background:var(--accent);border-radius:7px;color:#fff;display:inline-flex;font-weight:800;justify-content:center;min-height:44px;padding:11px 15px;text-align:center}.button:hover{background:var(--accent-strong)}.button.secondary{background:var(--accent-soft);color:var(--accent-strong)}.button.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.button.status-button.active{background:var(--accent);border-color:var(--accent);box-shadow:0 6px 16px rgba(37,99,235,.18);color:#fff}.button.warn{background:var(--warn)}.button:disabled{cursor:not-allowed;opacity:.55}.badge{background:var(--accent-soft);border-radius:999px;color:var(--accent-strong);display:inline-flex;font-size:12px;font-weight:800;padding:5px 9px;white-space:nowrap}.badge.blue{background:#e5eef9;color:var(--blue)}.badge.warn{background:#f8eadb;color:var(--warn)}.badge.status.learning{background:#eef2ff;color:#4338ca}.badge.status.solved{background:#dcfce7;color:#15803d}.badge.status.unclear{background:#fef3c7;color:#b45309}.badge-group{align-items:center;display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.list{display:grid;grid-gap:10px;gap:10px}.list-item{background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;padding:14px;min-width:0}.list-item h2,.list-item h3,.list-item p,.list-item strong{overflow-wrap:anywhere}.credit-guide-header h2{margin-bottom:0}.credit-guide-how,.credit-guide-intro{margin:0}.credit-guide-item-row{align-items:flex-start;gap:12px}.credit-guide-content{display:flex;flex:1 1 auto;gap:8px;min-width:0}.credit-guide-icon{flex:0 0 auto;font-size:18px;line-height:1.4}.credit-guide-copy{min-width:0}.credit-guide-how{font-size:12px}.credit-guide-badges{flex:0 1 48%;min-width:0;text-align:right}.credit-guide-badges .badge{max-width:100%;overflow-wrap:anywhere;white-space:normal}.credit-guide-progress{font-size:11px}.credit-guide-item.has-gauge{background:linear-gradient(135deg,var(--surface-strong) 0,#eef8f5 100%);border-color:#b9d8cf}.credit-guide-gauge{display:grid;grid-gap:7px;gap:7px;margin:12px 0 0 26px}.credit-guide-gauge-foot,.credit-guide-gauge-head{align-items:baseline;display:flex;gap:10px;justify-content:space-between}.credit-guide-gauge-head>span{color:var(--accent-strong);font-size:12px;font-weight:800}.credit-guide-gauge-head strong{color:var(--accent-strong);font-size:19px;line-height:1;white-space:nowrap}.credit-guide-gauge-head small{font-size:11px}.credit-guide-gauge-track{background-color:#dce9e5;background-image:linear-gradient(90deg,rgba(255,255,255,.9) 1px,transparent 0);background-size:10% 100%;border:1px solid #a9cfc4;border-radius:999px;box-shadow:inset 0 1px 2px rgba(32,93,82,.12);height:18px;overflow:hidden;position:relative}.credit-guide-gauge-fill{background:linear-gradient(90deg,#6bc1a9 0,var(--accent) 100%);border-radius:inherit;box-shadow:0 0 10px rgba(47,125,109,.35);display:block;height:100%;min-width:0;transition:width .3s ease}.credit-guide-gauge-foot{color:var(--muted);font-size:11px;font-weight:700}.credit-guide-gauge-foot span:last-child{color:var(--accent-strong);text-align:right}.point-guide-cap .page-subtitle,.point-guide-header h2,.point-guide-how,.point-guide-intro{margin:0}.point-guide-item{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.point-guide-main{display:flex;flex:1 1 auto;gap:8px;min-width:0}.point-guide-icon{flex:0 0 auto;font-size:18px;line-height:1.4}.point-guide-how{font-size:12px}.point-guide-badges{flex:0 1 48%;min-width:0}.point-guide-badges .badge{max-width:100%;overflow-wrap:anywhere;white-space:normal}.point-guide-cap{background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;padding:12px}.point-guide-cap .progress-track{background:var(--line);border-radius:999px;height:8px;overflow:hidden}.point-guide-cap .progress-track>span{background:var(--accent);border-radius:inherit;display:block;height:100%}.points-guide-section{margin-bottom:18px}.draw-result{align-items:center;background:#f8fbff;border:1px solid #bfd4ef;border-radius:8px;display:flex;gap:14px;justify-content:space-between;margin-top:12px;padding:12px}.draw-result.highlight{background:#fff8ed;border-color:#efc48e}.draw-result strong{display:block;font-size:20px;margin-top:8px}.draw-result-meta{display:grid;grid-gap:6px;gap:6px;min-width:min(100%,210px)}.draw-result-meta span{background:var(--surface);border:1px solid var(--line);border-radius:7px;color:var(--ink);font-size:13px;font-weight:800;padding:8px 9px}.card-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.card-edit-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-question-form{align-content:start}.history-header{display:grid;grid-gap:12px;gap:12px;margin-bottom:12px}.history-header h2{margin-bottom:0}.history-search{max-width:100%}.session-item{display:grid;grid-gap:10px;gap:10px}.session-item .page-subtitle{margin-bottom:0}.session-meta{color:var(--muted);font-size:13px;font-weight:700;gap:10px}.session-meta,.tag-list{display:flex;flex-wrap:wrap}.tag-list{gap:6px;min-width:0}.mastery-guide{border:1px solid var(--line);border-radius:8px;padding:9px 10px}.mastery-guide summary{color:var(--accent-strong);font-size:13px}.mastery-guide .badge{min-width:5.5rem;text-align:center}.tag-chip{background:#f4efe3;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;font-weight:800;min-height:32px;padding:6px 10px}.tag-chip.add,.tag-chip:hover{background:var(--accent-soft);color:var(--accent-strong)}.card-question-list{gap:4px}.card-question-item{padding:0;transition:border-color .15s,background .15s}.card-question-item.is-expanded{border-color:var(--accent)}.card-question-row{align-items:center;display:flex;min-height:48px}.card-question-checkbox{flex:0 0 auto;margin:0 0 0 12px}.card-question-button{align-items:center;background:transparent;color:var(--ink);display:flex;flex:1 1 auto;font-weight:700;gap:10px;justify-content:space-between;line-height:1.4;min-width:0;padding:12px;text-align:left}.card-question-button:hover{background:var(--accent-soft)}.card-question-button>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-question-chevron{color:var(--accent);flex:0 0 auto;font-size:18px}.card-question-detail{border-top:1px solid var(--line);display:grid;grid-gap:10px;gap:10px;padding:12px 14px 14px}.card-detail-meta{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.card-answer{background:var(--surface-strong);border-left:3px solid var(--accent);padding:10px 12px}.card-answer>span{color:var(--muted);font-size:12px;font-weight:800}.card-answer p{margin:4px 0 0}.flashcard-image{display:block;width:100%;max-height:420px;object-fit:contain;border:1px solid var(--line);border-radius:12px;background:#fff}.flashcard-image-picker,.flashcard-image-preview{display:grid;grid-gap:.5rem;gap:.5rem}.flashcard-image-button{width:-moz-fit-content;width:fit-content;cursor:pointer}.flashcard-image-button input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.image-crop-wrapper{position:relative;margin:.5rem auto;overflow:hidden;border-radius:8px;background:#000;touch-action:none}.image-crop-source{display:block;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.image-crop-rect{position:absolute;box-shadow:0 0 0 9999px rgba(0,0,0,.55);border:2px solid #fff;cursor:move;touch-action:none}.image-crop-handle{position:absolute;width:22px;height:22px;background:#fff;border:2px solid var(--accent);border-radius:50%;touch-action:none}.image-crop-handle.nw{top:-11px;left:-11px;cursor:nwse-resize}.image-crop-handle.ne{top:-11px;right:-11px;cursor:nesw-resize}.image-crop-handle.sw{bottom:-11px;left:-11px;cursor:nesw-resize}.image-crop-handle.se{bottom:-11px;right:-11px;cursor:nwse-resize}.card-detail-management{border-top:1px solid var(--line);justify-content:flex-end;padding-top:8px}.tag-chip.status-filter.learning{background:#eef2ff;color:#4338ca}.tag-chip.status-filter.solved{background:#dcfce7;color:#15803d}.tag-chip.status-filter.unclear{background:#fef3c7;color:#b45309}.tag-chip.status-filter.active{border-color:currentColor;box-shadow:inset 0 0 0 1px currentColor}.filter-summary{align-items:center;color:var(--muted);display:flex;flex-wrap:wrap;font-size:13px;gap:8px;justify-content:space-between;margin:10px 0}.tag-editor{align-items:center;display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) auto}.chat-window{display:grid;grid-gap:12px;gap:12px;min-width:0}.message-math-provider{display:contents}.message{border-radius:8px;line-height:1.7;max-width:min(92%,720px);min-width:0;overflow-wrap:anywhere;padding:12px 14px;white-space:pre-wrap}.message.user{background:#e8f3ff;justify-self:end}.message.assistant{background:var(--surface-strong);border:1px solid var(--line);justify-self:start}.message-meta{color:var(--muted);display:block;font-size:12px;margin-bottom:4px}.message-content>:first-child{margin-top:0}.message-content>:last-child{margin-bottom:0}.message-content ol,.message-content p,.message-content ul{margin:0 0 8px}.message-content mjx-container[display=true]{margin:10px 0;max-width:100%;overflow-x:auto;overflow-y:hidden}.message-image{border:1px solid var(--line);border-radius:8px;display:block;margin-top:10px;max-height:280px;max-width:100%;object-fit:contain}.file-note{color:var(--muted);font-size:13px}.tabbar{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.empty{border:1px dashed var(--line);border-radius:8px;color:var(--muted);padding:22px;text-align:center}.page-loading{display:grid;grid-gap:22px;gap:22px}.page-loading .page-title{margin-bottom:6px}.loading-skeleton{display:grid;grid-gap:10px;gap:10px}.loading-skeleton span{animation:skeleton-pulse 1.2s ease-in-out infinite;background:linear-gradient(90deg,var(--surface-strong),#f3f6fb,var(--surface-strong));background-size:200% 100%;border-radius:6px;display:block;height:14px}.loading-skeleton span:first-child{width:min(420px,80%)}.loading-skeleton span:nth-child(2){width:min(620px,100%)}.loading-skeleton span:nth-child(3){width:min(520px,90%)}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.notice{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;display:flex;gap:16px;justify-content:space-between;margin:18px 0;padding:18px}.notice.warn{background:#fff8ed;border-color:#efc48e}.notice h2{margin:8px 0 6px}.notice .page-subtitle{margin-bottom:0}.tabbar.compact{margin:0}.point-meter{display:grid;grid-gap:6px;gap:6px;min-width:min(100%,260px)}.point-meter span{background:var(--surface-strong);border:1px solid var(--line);border-radius:7px;color:var(--muted);font-size:13px;font-weight:800;padding:9px 10px}.review-controls{align-items:end;display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr) minmax(160px,220px);margin-top:12px}.compact-field{gap:4px}.checkbox-field{align-items:center;display:flex;grid-template-columns:none}.checkbox-field input{height:18px;width:18px}.weekday-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(7,minmax(0,1fr))}.study-calendar,.weekday-grid label{display:grid;grid-gap:6px;gap:6px}.study-calendar{grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-day,.calendar-weekday{align-items:center;border-radius:7px;display:flex;font-size:12px;justify-content:center;min-height:30px}.calendar-weekday{color:var(--muted);font-weight:700;min-height:20px}.calendar-day{background:var(--surface-strong);border:1px solid var(--line);color:var(--muted)}.calendar-day.active{background:#e6f4ed;border-color:#9ed6b3;color:#155d32;font-weight:700}.calendar-day.today{box-shadow:0 0 0 2px rgba(55,108,181,.25)}.calendar-day.blank{background:transparent;border-color:transparent;box-shadow:none}.progress-track{background:#ece6d8;border-radius:999px;height:10px;overflow:hidden;width:100%}.progress-track span{border:0;border-radius:0;background:var(--accent);display:block;height:100%;padding:0}.mini-schedule{display:flex;flex-wrap:wrap;gap:6px}.mini-schedule span{background:var(--surface);border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;font-weight:800;padding:6px 9px}.mini-schedule span.done{background:var(--accent-soft);color:var(--accent-strong)}.bingo-card{display:grid;grid-gap:7px;gap:7px;grid-template-columns:repeat(5,minmax(0,1fr));width:100%}.bingo-card.compact{gap:5px;max-width:360px}.bingo-card.mini{gap:3px;grid-template-columns:repeat(5,16px);width:max-content}.bingo-card.mini .bingo-cell{border-radius:4px;font-size:0;width:16px}.bingo-plaza-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.bingo-plaza-card{background:var(--surface);border:1px solid var(--line);border-radius:7px;display:grid;grid-gap:10px;gap:10px;padding:12px}.bingo-plaza-card.self{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.bingo-ranking-strip{display:flex;flex-wrap:wrap;gap:8px}.bingo-ranking-strip span{background:var(--surface-strong);border:1px solid var(--line);border-radius:999px;color:var(--text);font-size:12px;font-weight:800;padding:6px 10px}.bingo-header{color:var(--accent-strong);font-size:13px;font-weight:900;letter-spacing:0;padding-bottom:2px}.bingo-cell,.bingo-header{display:inline-flex;justify-content:center}.bingo-cell{align-items:center;aspect-ratio:1;background:var(--surface-strong);border:1px solid var(--line);border-radius:7px;color:var(--muted);font-size:14px;font-weight:800;min-width:0}.bingo-cell.open{background:var(--accent);border-color:var(--accent);color:white}.report-grid{margin:18px 0}@media (max-width:820px){.topbar{align-items:stretch;gap:10px;padding:10px 12px 8px}.grid.four,.grid.three,.grid.two{grid-template-columns:1fr}.container{padding:18px 12px 36px}.page-title{font-size:28px}.page-subtitle{margin-bottom:18px}.card,.panel{border-radius:7px;padding:14px}.row{gap:8px}.notice,.row{align-items:stretch;flex-direction:column}.notice{margin:14px 0;padding:14px}.draw-result{align-items:stretch;flex-direction:column}.review-controls{grid-template-columns:1fr}.weekday-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nav{flex-wrap:nowrap;gap:6px;margin:0 -12px;overflow-x:auto;padding:0 12px 4px;scrollbar-width:none;width:100%}.nav::-webkit-scrollbar{display:none}.nav a,.nav button{background:var(--surface-strong);border:1px solid var(--line);flex:0 0 auto;min-height:38px;padding:8px 10px}.button{width:100%}.link-button{align-self:flex-start;padding-left:0}.tabbar{display:grid;grid-template-columns:1fr;margin:14px 0}.message{max-width:100%;padding:11px 12px}.chat-window{max-height:58vh;overflow-y:auto;padding-right:2px}.textarea{min-height:96px}.question-textarea{min-height:140px}.compact-select{max-width:none}.tag-editor{grid-template-columns:1fr}.metric{display:flex;align-items:center;justify-content:space-between}.metric strong{font-size:24px;margin-top:0}}@media (max-width:420px){.brand{font-size:15px}.brand-mark{height:30px;width:30px}.page-title{font-size:26px}.input,.select,.textarea{min-height:46px}}@keyframes gacha-pop{0%{opacity:0;transform:scale(.55)}65%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes cell-flash{0%{background:#fff9c4;border-color:#f5c842;color:#1d2623;transform:scale(1.4);box-shadow:0 0 0 4px #f5c84266}40%{background:#ffe066;border-color:#e8a838;transform:scale(1.15);box-shadow:0 0 0 8px #f5c84233}70%{transform:scale(1.08)}to{background:var(--accent);border-color:var(--accent);color:white;transform:scale(1);box-shadow:none}}@keyframes bingo-bounce{0%,to{transform:scale(1) rotate(-1deg)}30%{transform:scale(1.12) rotate(1deg)}60%{transform:scale(1.06) rotate(-.5deg)}}.gacha-reveal-panel{animation:gacha-pop .45s cubic-bezier(.34,1.56,.64,1);background:var(--surface-strong);border:2px solid var(--accent);border-radius:14px;padding:24px 20px;text-align:center}.gacha-reveal-panel.has-bingo{background:#fff8ed;border-color:#e8a838}.gacha-reveal-number{display:block;font-size:52px;font-weight:900;letter-spacing:-1px;line-height:1;margin:12px 0 8px;color:var(--accent-strong)}.gacha-reveal-panel.has-bingo .gacha-reveal-number{color:#c47a00}.gacha-reveal-sub{color:var(--muted);font-size:14px;margin-top:4px}.gacha-reveal-results{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:10px}.gacha-reveal-chip{background:var(--surface-strong);border:1px solid var(--line);border-radius:20px;font-size:13px;font-weight:700;padding:4px 12px}.bingo-celebrate{animation:bingo-bounce .5s ease-in-out 4;background:linear-gradient(135deg,#fff4cc,#ffe0a0);border:2px solid #e8a838;border-radius:14px;font-size:28px;font-weight:900;letter-spacing:2px;padding:16px 24px;text-align:center;color:#a06000}.bingo-celebrate span{display:block;font-size:14px;font-weight:700;letter-spacing:0;margin-top:4px;color:#c47a00}.bingo-cell.just-opened{animation:cell-flash .7s ease-out forwards}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes result-card-in{0%{opacity:0;transform:scale(.7) translateY(40px)}65%{transform:scale(1.04) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.gacha-overlay{align-items:center;animation:overlay-fade-in .2s ease-out;background:rgba(0,0,0,.65);bottom:0;display:flex;justify-content:center;left:0;padding:24px;position:fixed;right:0;top:0;z-index:200}.gacha-overlay-card{animation:result-card-in .45s cubic-bezier(.34,1.56,.64,1);background:var(--surface-strong);border-radius:20px;box-shadow:0 24px 64px rgba(0,0,0,.35);max-width:380px;padding:32px 28px 28px;text-align:center;width:100%}.gacha-overlay-card.has-bingo{background:#fff8ed}.gacha-overlay-close{background:var(--surface-strong);border:1px solid var(--line);border-radius:100px;cursor:pointer;font-size:15px;font-weight:700;margin-top:20px;padding:10px 32px;width:100%}@keyframes bingo-line-pulse{0%,to{background:var(--accent);box-shadow:none;transform:scale(1)}40%{background:#e8a838;border-color:#c47a00;box-shadow:0 0 0 4px #f5c84255;transform:scale(1.15);color:white}}.bingo-cell.bingo-line{animation:bingo-line-pulse .6s ease-in-out .85s 3}.bingo-cell.just-opened.bingo-line{animation:cell-flash .7s ease-out forwards,bingo-line-pulse .6s ease-in-out .85s 3}@keyframes dot-bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-5px);opacity:1}}.gacha-loading{align-items:center;display:inline-flex;gap:4px;justify-content:center}.gacha-loading span{animation:dot-bounce 1.1s ease-in-out infinite;background:currentColor;border-radius:50%;display:inline-block;height:6px;width:6px}.gacha-loading span:nth-child(2){animation-delay:.18s}.gacha-loading span:nth-child(3){animation-delay:.36s}.bingo-cell.reach{color:#7a5a00;flex-direction:column;font-size:12px;gap:1px}.bingo-cell.reach-1{background:#fff4cc;border-color:#e8c84a}.bingo-cell.reach-2{background:#ffe57a;border-color:#d4a800}.bingo-cell.reach-3{background:#ffcc33;border-color:#b38600}.reach-label{font-size:9px;font-weight:900;letter-spacing:-.2px;line-height:1;opacity:.85}@keyframes chip-pop{0%{opacity:0;transform:scale(.5)}70%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.gacha-reveal-chip-new{animation:chip-pop .2s ease-out}.cal-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:14px}.cal-toolbar-nav{display:flex;gap:6px}.cal-toolbar-label{font-size:16px;font-weight:700;flex:1 1;text-align:center}.plan-create-actions{flex-wrap:wrap;gap:8px;margin-left:auto}.cal-view-switcher{display:flex;gap:4px}.plan-mode-switcher .button{flex:1 1;width:auto}.cal-toolbar-nav-spacer{min-width:128px}.cal-layout{display:flex;gap:16px}.cal-main{flex:1 1;min-width:0}.cal-sidebar{background:var(--surface-strong);border:1px solid var(--line);border-radius:12px;overflow-y:auto;padding:14px;width:220px;flex-shrink:0}.cal-sidebar-title{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--muted)}.cal-plan-card{background:var(--surface);border-radius:8px;padding:8px 10px}.cal-month-grid{background:var(--surface);border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden}.cal-month-header{background:var(--surface-strong);color:var(--muted);font-size:12px;font-weight:700;padding:8px 4px;text-align:center}.cal-month-cell,.cal-month-header{border-bottom:1px solid var(--line)}.cal-month-cell{border-right:1px solid var(--line);cursor:pointer;min-height:90px;padding:4px;transition:background .1s;vertical-align:top}.cal-month-cell:nth-child(7n){border-right:none}.cal-month-cell:hover{background:var(--surface-strong)}.cal-month-cell.blank{background:#fafaf9;cursor:default}.cal-month-cell.today{background:#eef3ff}.cal-date-num{color:var(--muted);display:block;font-size:12px;margin-bottom:4px;text-align:right}.cal-date-num.today-num{background:var(--accent);border-radius:50%;color:#fff;display:inline-flex;align-items:center;justify-content:center;float:right;font-weight:700;height:22px;width:22px}.cal-cell-tasks{clear:both;display:flex;flex-direction:column;gap:2px}.cal-week-grid{background:var(--surface);border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden}.cal-week-col{border-right:1px solid var(--line);cursor:pointer;min-height:300px;transition:background .1s}.cal-week-col:last-child{border-right:none}.cal-week-col:hover{background:var(--surface-strong)}.cal-week-col.today{background:#eef3ff}.cal-week-header{border-bottom:1px solid var(--line);padding:8px 4px 6px;text-align:center}.cal-week-dow{color:var(--muted);display:block;font-size:11px;font-weight:700}.cal-week-num{display:inline-flex;align-items:center;justify-content:center;font-size:18px;height:32px;width:32px}.cal-week-num.today-num{background:var(--accent);border-radius:50%;color:#fff;font-weight:700}.cal-week-tasks{display:flex;flex-direction:column;gap:4px;padding:6px 4px}.cal-empty-day{height:20px}.cal-day-view{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.cal-day-header{align-items:center;background:var(--surface-strong);border-bottom:1px solid var(--line);display:flex;font-size:16px;font-weight:700;gap:12px;justify-content:space-between;padding:14px 18px}.cal-day-header.today{background:#eef3ff}.cal-day-progress{color:var(--muted);display:block;font-size:11px;font-weight:600;margin-top:2px}.cal-day-header-actions{flex-shrink:0;gap:8px}.cal-day-header-actions .button{padding:6px 10px}.cal-day-tasks{display:flex;flex-direction:column;gap:10px;padding:16px}.cal-day-item{background:var(--surface-strong);border-left:4px solid var(--accent);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;transition:background .1s}.cal-day-logs{border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px;padding:16px}.cal-day-logs-header h3{font-size:15px;margin:0}.cal-day-logs-header .button{flex-shrink:0;padding:4px 10px;width:auto}.study-log-item{cursor:pointer}.study-log-mark{flex-shrink:0;font-size:16px;line-height:1}.cal-log-mark{align-self:flex-start;background:#eef6ee;border:1px solid #cfe4cf;border-radius:999px;color:#2f6b3f;font-size:10px;font-weight:700;padding:1px 6px}.cal-day-item.completed{opacity:.68}.cal-day-item.completed .cal-day-item-main strong{text-decoration:line-through}.cal-day-item:hover{background:#f0f0ec}.cal-day-item-main{display:flex;flex-direction:column;flex:1 1;gap:2px;min-width:0}.cal-day-item-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.task-priority-high{background:#fee2e2;border-color:#fecaca;color:#b91c1c}.task-priority-low{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.cal-task-checkbox{align-items:center;background:var(--surface);border:2px solid #9ca3af;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;flex:0 0 24px;font-size:15px;font-weight:900;height:24px;justify-content:center;padding:0;width:24px}.cal-task-checkbox.checked{background:#28a745;border-color:#28a745}.cal-task-list-empty{align-items:center;display:flex;flex-direction:column;gap:10px}.cal-task-list-empty .button{width:auto}.task-list-view{gap:18px}.task-list-section{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}.task-list-section-title{align-items:center;display:flex;gap:8px;margin-bottom:10px}.task-list-section-title h2{font-size:15px;margin:0}.task-list-section-items{gap:8px}.cal-task-list-row{padding:10px 12px}.task-list-completed{border:1px solid var(--line);border-radius:12px;overflow:hidden}.task-list-completed>summary{background:var(--surface-strong);cursor:pointer;font-size:13px;font-weight:700;padding:12px 14px}.task-list-completed .task-list-section{border:0;border-radius:0}.task-undo-toast{align-items:center;background:#1f2937;border-radius:10px;bottom:calc(20px + var(--visual-viewport-bottom));box-shadow:0 8px 24px rgba(0,0,0,.25);color:#fff;display:flex;gap:16px;left:50%;max-width:calc(100vw - 32px);padding:10px 12px 10px 16px;position:fixed;transform:translateX(-50%);z-index:260}.task-undo-toast .button{background:#fff;color:#1f2937;flex-shrink:0;padding:6px 10px;width:auto}.cal-chip{align-items:center;border-radius:4px;cursor:pointer;display:flex;font-size:11px;gap:4px;padding:2px 5px 2px 6px;overflow:hidden;transition:opacity .1s}.cal-chip:hover{opacity:.8}.cal-chip-title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.cal-chip-amount{color:var(--muted);white-space:nowrap}.cal-chip-check{background:none;border:none;cursor:pointer;font-size:13px;line-height:1;padding:0 2px}.cal-chip-priority{color:#dc2626;font-weight:900}.modal-backdrop{align-items:center;background:rgba(0,0,0,.35);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:200}.modal-box{background:var(--surface);border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.2);max-height:90vh;overflow-y:auto;width:380px;max-width:calc(100vw - 32px)}.modal-box.modal-wide{width:520px}.modal-header{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding:14px 18px}.modal-body{padding:18px}.create-plan-field-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.plan-task-preview-summary{background:#eef3ff;border:1px solid #cbd8ff;border-radius:8px;display:flex;flex-direction:column;gap:2px;padding:9px 11px}.plan-task-preview-summary strong{font-size:13px}.plan-task-preview-summary span{color:var(--muted);font-size:11px}.plan-task-preview-list{border:1px solid var(--line);border-radius:8px;max-height:210px;overflow-y:auto}.plan-task-preview-row{align-items:center;border-bottom:1px solid var(--line);display:grid;font-size:12px;grid-gap:8px;gap:8px;grid-template-columns:74px minmax(0,1fr) auto;padding:7px 9px}.plan-task-preview-row:last-child{border-bottom:0}.plan-task-preview-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-task-stepper{align-items:center;display:flex;gap:6px;justify-content:flex-end}.plan-task-stepper-btn{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:6px;color:var(--accent-strong);cursor:pointer;display:flex;font-size:16px;font-weight:800;height:28px;justify-content:center;line-height:1;padding:0;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:28px}.plan-task-stepper-btn:active{background:var(--line)}.plan-task-stepper-btn:disabled{color:var(--muted);cursor:not-allowed;opacity:.5}.plan-task-stepper-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:52px;text-align:center}.plan-task-stepper-minutes{color:var(--muted)}.plan-task-added-tag{background:var(--accent-strong);border-radius:4px;color:#fff;font-size:10px;font-weight:700;margin-left:4px;padding:1px 4px;vertical-align:middle}.plan-task-add-day{align-items:center;display:flex;gap:8px;margin-top:8px}.plan-task-add-day .input{flex:1 1;min-width:0}.plan-task-add-day .button{flex-shrink:0;white-space:nowrap}.task-progress{border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;gap:8px;padding:10px 12px}.task-progress-head{align-items:baseline;display:flex;justify-content:space-between}.task-progress-head span{font-size:13px;font-weight:700}.task-progress-head strong{color:var(--accent-strong);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.task-progress-bar{background:var(--line);border-radius:999px;height:8px;overflow:hidden}.task-progress-fill{background:var(--accent-strong);border-radius:999px;height:100%;transition:width .15s ease}.task-progress-stepper{justify-content:flex-start}.task-progress-stepper .button{margin-left:auto}.cal-day-progress.overload{background:#fff3cd;border:1px solid #ffc107;border-radius:999px;color:#856404;padding:1px 8px}.create-plan-advanced{border:1px solid var(--line);border-radius:8px}.create-plan-advanced summary{color:var(--accent-strong);cursor:pointer;font-size:13px;font-weight:800;padding:10px 12px}.create-plan-advanced-body{border-top:1px solid var(--line);max-height:48vh;overflow-y:auto;padding:12px}@media (max-width:640px){.create-plan-modal{border-radius:0;display:flex;flex-direction:column;height:100dvh;max-height:100dvh;max-width:none;overflow:hidden;width:100%}.create-plan-modal .modal-header{flex:0 0 auto;padding:8px 12px}.create-plan-form{display:flex;flex:1 1 auto;flex-direction:column;gap:6px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 10px calc(10px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}.create-plan-field-grid,.create-plan-form>.review-controls{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.create-plan-form .field{gap:3px;min-width:0}.create-plan-form .field>span{font-size:11px}.create-plan-form .input,.create-plan-form .select{min-height:36px;min-width:0;padding:7px 8px;width:100%}.create-plan-form .create-plan-advanced{flex:0 0 auto;min-height:40px}.create-plan-form .create-plan-advanced[open]{display:block}.create-plan-form .create-plan-advanced summary{padding:9px 10px}.create-plan-form .create-plan-advanced-body{max-height:none;overflow:visible;padding:8px}.create-plan-form>.button{flex:0 0 auto;min-height:40px}}.cal-month-cell.overdue,.cal-week-col.overdue{background:#fff8f8}.cal-day-item.overdue{background:#fff3f3}.cal-overdue-dot{color:#dc3545;font-size:12px;font-weight:900;line-height:1}.cal-month-cell-top{align-items:center;display:flex;justify-content:space-between;margin-bottom:4px}.cal-alert-box{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;color:#856404;font-size:12px;padding:8px 10px}.cal-test-marker{align-items:center;border-radius:4px;background:#fff3cd;display:flex;font-size:11px;gap:3px;padding:2px 5px 2px 6px;overflow:hidden}.cal-test-icon{flex-shrink:0;font-size:10px}.cal-day-test-banner{border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:6px;padding:10px 16px}.cal-day-test-item{align-items:center;background:#fff3cd;border-radius:6px;display:flex;gap:8px;padding:8px 12px}.cal-week-summary{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:10px;display:flex;gap:10px;margin-bottom:8px;padding:8px 14px;flex-wrap:wrap}.cal-week-summary-label{color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap}.cal-week-summary-bar{background:var(--line);border-radius:999px;flex:1 1;height:8px;min-width:80px;overflow:hidden}.cal-week-summary-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .3s ease}.cal-week-summary-pct{font-size:13px;font-weight:700;white-space:nowrap}.cal-week-summary-detail{color:var(--muted);font-size:12px;white-space:nowrap}.cal-more{background:none;border:none;color:var(--muted);cursor:pointer;font-size:10px;padding:2px 4px;text-align:left;text-decoration:underline}.cal-more:hover{color:var(--text)}.cal-plan-card.overdue{background:#fff8f8}@media (max-width:700px){.cal-layout{flex-direction:column}.cal-sidebar{width:auto}.cal-toolbar-label{width:100%;order:-1}}.excluded-picker{border:1px solid var(--border);border-radius:8px;padding:10px;background:var(--surface);max-width:320px}.excluded-picker-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.excluded-picker-month{font-size:13px;font-weight:600}.excluded-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:2px;gap:2px}.excluded-picker-dow{text-align:center;font-size:11px;color:var(--text-secondary);padding:2px 0}.excluded-picker-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12px;border-radius:4px;border:1px solid transparent;cursor:pointer;background:transparent;color:var(--text);transition:background .1s}.excluded-picker-cell:not(.blank):not(.out-of-range):hover{background:var(--primary-light,#e8f0fe)}.excluded-picker-cell.excluded{background:#ffe0e0;border-color:#f88;color:#c00;font-weight:600}.excluded-picker.day-picker{max-width:360px}.excluded-picker-cell.picked{background:#dff3e6;border-color:#4f9d69;color:#1f5c36;font-weight:600}.day-picker-dow{background:transparent;border:0;cursor:pointer}.day-picker-dow:hover{background:var(--primary-light,#e8f0fe);border-radius:4px}.excluded-picker-cell.out-of-range{color:var(--text-secondary);opacity:.35;cursor:default}.excluded-picker-cell.blank{cursor:default}.excluded-picker-list{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}.excluded-picker-tag{font-size:11px;background:#ffe0e0;border:1px solid #f88;border-radius:12px;padding:2px 8px;color:#c00;cursor:pointer}.excluded-picker-tag:hover{background:#ffc0c0}.day-picker .excluded-picker-tag{background:#dff3e6;border-color:#4f9d69;color:#1f5c36}.day-picker .excluded-picker-tag:hover{background:#c6e8d4}.cal-subject-filter{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:10px}.cal-subject-filter-label{font-size:12px;color:var(--text-secondary)}.cal-subject-chip{font-size:12px;padding:3px 10px;border-radius:12px;border:1.5px solid;cursor:pointer;font-weight:500;background:transparent;transition:opacity .15s,background .15s}.cal-subject-chip:hover{opacity:.8}@media print{.no-print{display:none!important}body{background:#fff}.print-sheet{box-shadow:none;margin:0;padding:0;max-width:none}.print-card{page-break-inside:avoid;break-inside:avoid}}@page{margin:16mm}.journal-editor{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface)}.journal-side{border:1px solid var(--line);border-radius:10px;min-width:0;padding:10px;background:var(--surface-strong)}.journal-line{display:grid;grid-template-columns:1fr 120px auto;grid-gap:8px;gap:8px;align-items:center;margin-bottom:8px}.journal-amount,.journal-total{text-align:right}.journal-total{font-size:.85rem;color:var(--muted);border-top:1px dashed var(--line);padding-top:6px;margin-top:4px}.journal-balance{margin:10px 0 0;font-size:.85rem;font-weight:600}.bookkeeping-submit-actions,.journal-copy-actions{display:flex;flex-wrap:wrap;gap:8px}.journal-copy-actions{margin-top:8px}.journal-copy-actions .button{font-size:.78rem;padding:5px 9px}.journal-view{border:1px solid var(--line);border-radius:10px;overflow:hidden}.journal-view>div{padding:10px}.journal-view>div:first-child{border-right:1px solid var(--line)}.journal-view-head{font-weight:700;font-size:.85rem;margin-bottom:6px;color:var(--muted)}.journal-view-line{display:flex;justify-content:space-between;gap:12px;padding:3px 0}.journal-view-line span:last-child{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.journal-result{font-size:1.6rem;font-weight:800;text-align:center;padding:8px 0}.modal-panel{background:var(--surface);border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.2);max-height:90vh;overflow-y:auto;width:480px;max-width:calc(100vw - 32px);padding:18px}.account-title-list{max-height:50vh;overflow-y:auto}.account-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 4px;border-bottom:1px solid var(--line)}@media (max-width:640px){.app-shell:has(.bookkeeping-entry-form) .student-tabbar,.app-shell:has(.bookkeeping-entry-form) .topbar{display:none}.app-shell.has-student-tabbar:has(.bookkeeping-entry-form) .bookkeeping-page,.app-shell:has(.bookkeeping-entry-form) .bookkeeping-page{height:calc(100dvh - var(--visual-viewport-bottom));overflow:hidden;padding:8px 10px}.bookkeeping-form .bookkeeping-bottom-nav,.bookkeeping-form .bookkeeping-page-header,.bookkeeping-form>.page-subtitle{display:none}.bookkeeping-entry-form{display:flex;flex-direction:column;gap:6px;height:100%;overflow:hidden;padding:10px}.bookkeeping-entry-form>.row h2{font-size:18px;margin:0}.bookkeeping-entry-form .field{gap:3px}.bookkeeping-entry-form .field>span{font-size:12px}.bookkeeping-entry-form .input,.bookkeeping-entry-form .select{min-height:36px;padding:7px 9px}.bookkeeping-entry-form .textarea{min-height:42px;padding:7px 9px}.bookkeeping-entry-form>.grid.two{gap:6px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.bookkeeping-entry-form>.grid.two>.grid.two{gap:5px;grid-template-columns:repeat(2,minmax(0,1fr))}.bookkeeping-entry-form .field .link-button{font-size:11px;padding:0}.bookkeeping-memo-field{flex:0 0 auto}.bookkeeping-journal-field,.bookkeeping-page .journal-editor{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.bookkeeping-page .journal-editor{overflow:hidden;padding:6px}.bookkeeping-page .journal-sides{flex:1 1 auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-height:0;overflow-y:auto}.bookkeeping-page .journal-side{padding:6px}.bookkeeping-page .journal-side-header{align-items:center;flex-direction:row;gap:2px}.bookkeeping-page .journal-side-header .button{font-size:11px!important;padding:2px 4px!important;width:auto}.bookkeeping-page .journal-line{grid-template-columns:minmax(0,1fr) 26px;gap:4px;margin-bottom:6px}.bookkeeping-page .journal-line .input{min-width:0;width:100%}.bookkeeping-page .journal-line .journal-amount{grid-column:1;text-align:right}.bookkeeping-page .journal-line .link-button{grid-column:2;grid-row:1/span 2;padding:0}.bookkeeping-page .journal-total{font-size:.75rem}.bookkeeping-page .journal-balance{font-size:.78rem;margin-top:5px}.bookkeeping-entry-form .journal-copy-actions{margin-top:4px}.bookkeeping-entry-form .journal-copy-actions .button{min-height:30px;padding:3px 7px}.bookkeeping-entry-form .bookkeeping-submit-actions{flex:0 0 auto;flex-wrap:nowrap;gap:6px}.bookkeeping-submit-actions .button{flex:1 1 140px;min-height:40px;padding:7px 8px}}.home-stat-strip{display:none}.home-stat{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;color:var(--ink);display:flex;flex-direction:column;gap:2px;justify-content:center;min-width:0;padding:12px 6px;text-align:center}.home-stat-value{color:var(--accent-strong);font-size:22px;font-weight:800;line-height:1.1}.home-stat-value small{font-size:12px;font-weight:700;margin-left:2px}.home-stat-label{color:var(--muted);font-size:11px;line-height:1.2}.home-stat-button,.home-streak-button{font:inherit;width:100%}.home-detail-value{align-items:baseline;color:var(--accent-strong);display:flex;font-size:36px;font-weight:900;gap:7px;justify-content:center;padding:8px}.home-detail-value small{color:var(--muted);font-size:13px}.home-streak-button:active{background:var(--accent-soft)}.streak-calendar-modal{overflow:hidden;width:min(440px,calc(100vw - 24px))}.streak-calendar-summary{background:var(--accent-soft);display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.streak-calendar-summary>span{align-items:baseline;display:flex;gap:5px;justify-content:center;padding:10px}.streak-calendar-summary>span+span{border-left:1px solid rgba(47,125,109,.2)}.streak-calendar-summary strong{color:var(--accent-strong);font-size:24px}.streak-calendar-summary small{color:var(--muted);font-size:12px;font-weight:700}.streak-calendar-content{max-height:calc(90dvh - 118px);overflow-y:auto;padding:12px}.streak-calendar-content>.panel{border:0;box-shadow:none;padding:0}.streak-calendar-content>.panel>.page-subtitle:first-of-type,.streak-calendar-content>.panel>.row:first-child{display:none}.settings-index{background:var(--surface);border:1px solid var(--line);border-radius:12px;display:grid;margin-bottom:12px;overflow:hidden}.settings-index-item{align-items:center;background:transparent;color:var(--ink);display:flex;gap:12px;justify-content:space-between;min-height:58px;padding:10px 14px;text-align:left;width:100%}.settings-index-item+.settings-index-item{border-top:1px solid var(--line)}.settings-index-item.is-active,.settings-index-item:hover{background:var(--accent-soft)}.settings-index-item>span:first-child{display:grid;grid-gap:2px;gap:2px}.settings-index-item small{color:var(--muted);font-size:12px}.settings-index-item>span:last-child{color:var(--accent);font-size:24px;transform:rotate(0deg);transition:transform .15s}.settings-index-item.is-active>span:last-child{transform:rotate(90deg)}.settings-page>.panel,.settings-page>form.panel{margin-bottom:12px!important}.settings-detail-header{display:none}@media (max-width:820px){.app-shell:has(.settings-page.is-detail) .student-tabbar,.app-shell:has(.settings-page.is-detail) .topbar{display:none}.settings-page.is-detail{display:flex;flex-direction:column;height:calc(100dvh - var(--visual-viewport-bottom));overflow:hidden;padding:8px 10px}.settings-page.is-detail>.page-title,.settings-page.is-detail>.settings-index{display:none}.settings-page.is-detail>.settings-detail-header{display:block;flex:0 0 auto}.settings-page.is-detail>.panel,.settings-page.is-detail>form.panel{flex:1 1 auto;margin:6px 0 0!important;min-height:0;overflow-y:auto}.app-shell:has(.test-create-form) .student-tabbar,.app-shell:has(.test-create-form) .topbar{display:none}.app-shell.has-student-tabbar:has(.test-create-form) .tests-page,.app-shell:has(.test-create-form) .tests-page{height:calc(100dvh - var(--visual-viewport-bottom));padding:8px 10px}.tests-page:has(.test-create-form)>.list,.tests-page:has(.test-create-form)>.tab-bar{display:none}.tests-page:has(.test-create-form) .page-head-row{margin-bottom:6px!important}.test-create-form{display:flex;flex:1 1 auto;flex-direction:column;gap:8px;justify-content:flex-start;margin:0!important;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.test-create-form h2{font-size:18px;margin:0}.test-card-form>.compact-action-row,.test-plan-form>.compact-action-row,.test-reflection-form>.compact-action-row{background:var(--surface);bottom:0;position:-webkit-sticky;position:sticky;z-index:2}.test-create-form>.button{bottom:0;box-shadow:0 0 0 8px var(--surface);flex:0 0 auto;position:-webkit-sticky;position:sticky;z-index:2}}@media (max-width:820px) and (max-height:650px){.gacha-page .gacha-mobile-summary{display:none}.gacha-card-section,.gacha-draw-section{padding:7px!important}.gacha-card-section .bingo-card{max-width:min(100%,48dvh,270px)}}@media (max-width:820px){.app-shell:has(.student-home){height:100dvh;min-height:0;overflow:hidden}.student-home .file-note,.student-home .home-hide-mobile{display:none}.home-stat-strip{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0}.student-home{display:grid;grid-gap:8px;gap:8px;height:calc(100dvh - 52px);overflow:hidden;padding-top:10px}.student-home .page-title{font-size:22px;margin-bottom:4px}.student-home>.page-subtitle{margin-bottom:2px}.student-home .panel{padding:14px 14px 10px}.student-home .panel.stack{gap:8px}.student-home .row{align-items:center;flex-direction:row;gap:10px}.student-home .list{gap:8px}.student-home .list-item{padding:10px 12px}.student-home .list-item .row>div:first-child{min-width:0}.student-home .list-item .page-subtitle{margin:2px 0 0}.student-home .badge-group{flex:0 0 auto}.student-home .notice{margin:0;padding:12px 14px}.student-home .notice h2{font-size:18px;margin:4px 0 2px}.student-home .notice .page-subtitle{margin:0 0 8px}}@media (max-width:820px) and (max-height:740px){.student-home{gap:6px;padding-top:7px}.student-home>.page-title{font-size:20px;margin:0}.student-home .list-item .page-subtitle,.student-home>.home-action-tile,.student-home>.page-subtitle{display:none}.student-home .panel{padding:10px 12px}.student-home .panel h2{font-size:17px;margin:0}.student-home .list{gap:5px}.student-home .list-item{padding:7px 10px}.student-home .list-item .button{min-height:32px;padding:6px 12px}.home-stat-strip{margin:0}.home-stat{padding:7px 4px}.home-stat-value{font-size:18px}.student-home .notice{padding:9px 12px}.student-home .notice h2{font-size:16px;margin:2px 0}}@media (max-width:820px){.chat-detail-header{align-items:center;flex-direction:row;gap:10px}.chat-detail-header>div{min-width:0}.chat-detail-header .page-title{font-size:20px;margin-bottom:2px}.chat-detail-header .page-subtitle{margin-bottom:0}.chat-detail-header>.button{align-self:center;flex:0 0 auto;white-space:nowrap;width:auto}.chat-detail .panel{padding:12px}.chat-detail .chat-window{max-height:62vh}.chat-composer .field span{font-size:12px}.chat-composer .textarea{min-height:64px}.chat-list .history-header{gap:8px}}.review-page.is-picking{max-width:1040px}.review-picker-list{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;margin:0;padding:0}.review-picker-card{align-items:flex-start;border:1px solid var(--line);border-radius:10px;cursor:pointer;display:flex;gap:.6rem;height:100%;padding:.7rem}.review-picker-card:hover{background:var(--accent-soft);border-color:var(--accent)}.review-picker-footer .button{width:100%}.review-set-save-row{display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) auto}.review-set-save-row .button{width:auto}.review-order-field{margin-bottom:8px}.review-timer{background:var(--accent-soft);border-radius:999px;color:var(--accent-strong);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;padding:2px 10px;white-space:nowrap}.review-timer.is-stopped{background:var(--line);color:var(--muted)}.review-timer.is-stopped.is-faster{background:var(--accent);color:#fff}.review-timer-note{line-height:1.4}.review-retention-trend{align-items:flex-end;display:flex;gap:3px;height:34px;margin-top:6px}.review-retention-trend>span{align-items:flex-end;background:var(--accent-soft);border-radius:3px;display:flex;height:28px;overflow:hidden;width:9px}.review-retention-trend>span i{background:var(--accent);display:block;width:100%}.review-retention-trend small{color:var(--muted);font-size:10px;margin-left:4px}@media (max-width:820px){.review-page{padding-top:12px}.review-page .page-title{font-size:22px;margin-bottom:4px}.review-picker{gap:8px;overflow:hidden!important}.review-picker-footer,.review-picker-toolbar{flex:0 0 auto}.review-set-library{flex:0 0 auto!important;max-height:38dvh;overflow-y:auto}.review-set-save-row{grid-template-columns:1fr}.review-set-save-row .button{width:100%}.review-picker-list{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.review-picker-list li+li{border-top:1px solid var(--line)}.review-picker-card{border:0;border-radius:0;min-height:58px;padding:.6rem .35rem}.review-runner h2{font-size:22px;line-height:1.4}.review-runner .card{font-size:17px;line-height:1.7}.review-runner .grid.three{gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))}.review-runner .grid.three .button{font-size:13.5px;min-height:52px;padding:10px 4px;width:100%}}.tab-bar{border-bottom:1px solid var(--line);display:flex;gap:4px}.tab-button{background:transparent;border-bottom:2px solid transparent;color:var(--muted);display:inline-flex;align-items:center;gap:6px;font-weight:700;padding:10px 14px}.tab-button.active{border-bottom-color:var(--accent);color:var(--accent-strong)}@media (max-width:820px){.list-item .row{align-items:center;flex-direction:row}.list-item .row:has(>.row){align-items:stretch;flex-direction:column;gap:8px}.list-item .row:has(>.row)>.row{flex-wrap:wrap;justify-content:flex-start}.list-item .row:has(>.row)>.row .button{flex:1 1 auto;width:auto}.page-head-row{align-items:center;flex-direction:row}.page-head-row>.button{flex:0 0 auto;width:auto}.cal-toolbar-label{flex:1 0 100%;order:-1;text-align:left}.cal-month-header{font-size:11px;padding:6px 2px}.cal-month-cell{min-height:56px}.cal-week-col{min-height:200px}}.student-tabbar{display:none}.reflection-page .page-title{margin-bottom:12px}.reflection-date-bar{align-items:center;display:grid;grid-gap:8px;gap:8px;grid-template-columns:auto 1fr auto;margin-bottom:12px}.reflection-date-bar>.button{width:auto}.reflection-date-label{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.reflection-date-label strong{font-size:17px}.reflection-date-label .button{min-height:0;padding:2px 8px;width:auto}.reflection-stat-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}.reflection-section-header{align-items:center;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.reflection-section-header h2{font-size:15px;margin:0}.reflection-section-header .button{min-height:0;padding:2px 8px;width:auto}.reflection-done-item{align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:10px;display:flex;gap:8px;padding:10px}.reflection-done-item.kind-task{border-left:4px solid #28a745}.reflection-done-item.kind-log{border-left:4px solid var(--accent-strong)}.reflection-done-item.kind-focus{border-left:4px solid #f0a500}.reflection-done-mark{font-size:15px;line-height:1.4}.reflection-done-main{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.reflection-done-main strong{font-size:14px;overflow-wrap:anywhere}.reflection-done-right{align-items:flex-end;display:flex;flex-direction:column;flex-shrink:0;gap:4px}.reflection-done-time{font-size:11px}.reflection-achievement{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))}.reflection-achievement .button{padding:8px 6px;width:100%}.reflection-history{display:grid;grid-gap:4px;gap:4px;grid-template-columns:repeat(14,minmax(0,1fr))}.reflection-history-day{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;color:var(--ink);cursor:pointer;display:flex;flex-direction:column;font:inherit;gap:1px;min-width:0;padding:6px 0}.reflection-history-day.is-today{border-color:var(--accent-strong)}.reflection-history-day.is-selected{background:var(--accent-soft);border-color:var(--accent-strong);box-shadow:inset 0 0 0 1px var(--accent-strong)}.reflection-history-mark{font-size:14px;line-height:1.2}.reflection-history-date{color:var(--muted);font-size:10px;line-height:1.2}.reflection-tests-link{font-size:12px;margin-top:12px}.reflection-tests-link a{text-decoration:underline}.cal-day-reflection-link{align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:10px;color:var(--ink);display:flex;gap:10px;margin-top:12px;padding:12px;text-decoration:none}.cal-day-reflection-link:hover{border-color:var(--accent-strong)}.cal-day-reflection-mark{font-size:18px}.cal-day-reflection-text{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.cal-day-reflection-text strong{font-size:14px}@media (max-width:820px){.student-tabbar{align-items:stretch;background:rgba(255,253,248,.96);border-top:1px solid var(--line);bottom:var(--visual-viewport-bottom);box-shadow:0 -6px 20px rgba(31,39,35,.06);display:flex;left:0;min-height:var(--student-tabbar-height);padding:0 env(safe-area-inset-right,0) var(--student-tabbar-safe-bottom) env(safe-area-inset-left,0);position:fixed;right:0;z-index:40}.student-tab{align-items:center;background:transparent;color:var(--muted);display:flex;flex:1 1;flex-direction:column;gap:3px;justify-content:center;min-height:var(--student-tabbar-content-height);min-width:0;padding:7px 2px 6px}.student-tab svg{height:24px;width:24px}.student-tab span{font-size:10.5px;font-weight:600;line-height:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-tab.is-active{color:var(--accent-strong)}.student-tab.is-active svg{stroke-width:2.1}.student-tab-fab{align-items:center;color:var(--muted);display:flex;flex:1 1;flex-direction:column;gap:4px;justify-content:flex-end;min-width:0;padding:0 2px 6px}.student-tab-fab-circle{align-items:center;background:var(--accent);border-radius:999px;box-shadow:0 6px 14px rgba(47,125,109,.35);color:#fff;display:flex;height:48px;justify-content:center;margin-top:-24px;width:48px}.student-tab-fab-circle svg{height:22px;width:22px}.student-tab-fab span:last-child{font-size:10.5px;font-weight:600;line-height:1}.student-tab-fab.is-active .student-tab-fab-circle{background:var(--accent-strong)}.app-shell.has-student-tabbar .nav,.app-shell:has(.student-tabbar) .nav{display:none}.app-shell.has-student-tabbar .container,.app-shell:has(.student-tabbar) .container{padding-bottom:calc(var(--student-tabbar-height) + var(--visual-viewport-bottom) + 26px)}.app-shell.has-student-tabbar .student-home,.app-shell:has(.student-tabbar) .student-home{height:calc(100dvh - 52px - var(--student-tabbar-height) - var(--visual-viewport-bottom));min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;padding-bottom:16px;scroll-padding-bottom:16px}}.pomodoro-header-timer{align-items:center;align-self:center;background:var(--accent-strong);border-radius:999px;color:#fff;display:flex;flex:0 1 auto;gap:8px;min-width:0;padding:5px 5px 5px 12px;text-decoration:none}.pomodoro-header-timer.phase-long_break,.pomodoro-header-timer.phase-short_break{background:var(--blue)}.pomodoro-header-timer-phase{font-size:12px;font-weight:600;opacity:.85;white-space:nowrap}.pomodoro-header-timer-clock{font-size:15px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.pomodoro-header-timer-task{font-size:12px;max-width:180px;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pomodoro-header-timer-toggle{background:rgba(255,255,255,.22);border:none;border-radius:999px;color:#fff;cursor:pointer;flex-shrink:0;font-size:12px;height:28px;width:28px}@media (max-width:820px){.pomodoro-header-timer{gap:6px;padding:4px 4px 4px 10px}.pomodoro-header-timer-task{display:none}.topbar:has(.pomodoro-header-timer) .brand-name{display:none}}.focus-page{align-items:center;gap:16px;text-align:center}.focus-linked-task,.focus-page{display:flex;flex-direction:column}.focus-linked-task{background:var(--surface-strong);border:1px solid var(--line);border-radius:12px;gap:4px;padding:10px 16px;width:100%}.focus-ring-wrap{height:min(72vw,280px);margin:8px 0;position:relative;width:min(72vw,280px)}.focus-ring{height:100%;transform:rotate(-90deg);width:100%}.focus-ring-track{fill:none;stroke:var(--line);stroke-width:10}.focus-ring-progress{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-width:10;transition:stroke-dashoffset .3s linear}.focus-ring-wrap.phase-long_break .focus-ring-progress,.focus-ring-wrap.phase-short_break .focus-ring-progress{stroke:var(--blue)}.focus-ring-center{align-items:center;display:flex;flex-direction:column;gap:4px;inset:0;justify-content:center;position:absolute}.focus-phase-label{color:var(--muted);font-size:13px;font-weight:600}.focus-clock{font-size:44px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.focus-task-label{color:var(--muted);font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.focus-controls{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.focus-minutes-picker{align-items:center;display:flex;flex-direction:column;gap:8px;width:100%}.focus-minutes-options{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.focus-minutes-chip{background:var(--surface-strong);border:1px solid var(--line);border-radius:999px;color:inherit;cursor:pointer;font-size:14px;font-weight:600;padding:7px 14px}.focus-minutes-chip.selected{background:var(--accent);border-color:var(--accent);color:#fff}.focus-ticket-note{font-size:12px;max-width:420px}.focus-today-summary{align-items:baseline;display:flex;gap:6px}.focus-today-summary strong{color:var(--accent-strong);font-size:20px}.focus-lock-note{font-size:12px;max-width:420px}.focus-history-row-head{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.focus-history-note{overflow-wrap:anywhere;white-space:pre-wrap}.student-sheet-overlay{align-items:flex-end;background:rgba(20,26,24,.42);bottom:var(--visual-viewport-bottom);display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:50}.student-sheet{background:var(--surface);border-radius:18px 18px 0 0;box-shadow:0 -12px 32px rgba(31,39,35,.18);max-width:640px;padding:10px 16px calc(20px + var(--student-tabbar-safe-bottom));width:100%}.student-sheet-handle{background:var(--line);border-radius:2px;height:4px;margin:0 auto 12px;width:40px}.student-sheet-header{align-items:center;display:flex;font-weight:700;justify-content:space-between;margin-bottom:12px}.student-sheet-close{background:transparent;color:var(--muted);font-size:22px;line-height:1;padding:4px 8px}.student-sheet-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.student-sheet-item{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:12px;color:var(--ink);display:flex;flex-direction:column;gap:6px;justify-content:center;padding:14px 8px;text-align:center}.student-sheet-item svg{color:var(--accent-strong);height:24px;width:24px}.student-sheet-item span{font-size:12.5px;font-weight:600}.student-sheet-actions{border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:14px}.student-sheet-actions button{background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;color:var(--ink);flex:1 1 auto;min-height:40px;padding:8px 12px}.student-sheet-actions .student-sheet-logout{background:var(--accent-soft);border-color:transparent;color:var(--accent-strong);font-weight:700;width:100%}.app-menu-button,.chat-tools-toggle,.compact-input-tabs,.gacha-mobile-summary,.home-action-tile,.mobile-optional-toggle,.mobile-options-button,.mobile-section-tabs{display:none}.compact-main-fields,.compact-optional-fields,.mobile-options-panel,.mobile-options-sheet{display:contents}.compact-action-row,.compact-field-row{display:flex;gap:1rem}.compact-action-row{gap:.5rem}.mobile-options-close,.mobile-options-panel>.student-sheet-handle,.mobile-options-panel>.student-sheet-header{display:none}.quick-setting-list,.settings-summary{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.quick-setting-label,.settings-summary span{background:var(--surface-strong);border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;font-weight:800;line-height:1.25;padding:5px 9px}.quick-setting-block{display:grid;grid-gap:8px;gap:8px}.quick-setting-label{background:transparent;border-color:transparent;border-radius:0;padding:0}.chat-detail-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end}.chat-composer-actions{display:flex;gap:8px}.chat-composer-actions .button[type=submit]{flex:1 1 auto}.app-menu-overlay{align-items:flex-end;background:rgba(20,26,24,.42);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:60}.app-menu-sheet{background:var(--surface);border-radius:18px 18px 0 0;box-shadow:0 -12px 32px rgba(31,39,35,.18);max-width:640px;padding:10px 16px calc(20px + env(safe-area-inset-bottom, 0px));width:100%}.app-menu-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.app-menu-item{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;display:flex;font-weight:800;justify-content:center;min-height:48px;padding:10px;text-align:center}@media (max-width:820px){.app-shell{min-height:100dvh}.topbar{gap:8px;min-height:52px;padding:8px 12px}.topbar .nav{display:none}.app-menu-button{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;color:var(--ink);display:inline-flex;flex:0 0 auto;height:40px;justify-content:center;width:40px}.container{padding:14px 10px 28px}.page-title{font-size:24px;line-height:1.15}.page-subtitle{font-size:14px;line-height:1.45;margin-bottom:12px}.card,.list-item,.notice,.panel{box-shadow:0 8px 22px rgba(31,39,35,.07)}.card,.panel{padding:12px}.stack{gap:10px}.list{gap:8px}.list-item{padding:10px}.button{min-height:40px;padding:9px 12px;width:auto}.form>.button,.tabbar:not(.compact)>.button{width:100%}.input,.select{min-height:40px;padding:9px 10px}.textarea{min-height:76px;padding:9px 10px}.question-textarea{min-height:96px}.field span{font-size:12px}.mobile-section-tabs{background:var(--surface);border:1px solid var(--line);border-radius:8px;display:flex;gap:4px;margin:0 0 10px;padding:4px}.mobile-section-tabs button{background:transparent;border-radius:6px;color:var(--muted);flex:1 1;font-size:13px;font-weight:800;min-height:36px;min-width:0;padding:7px 8px}.mobile-section-tabs button.is-active{background:var(--accent);color:#fff}.compact-input-tabs{background:var(--surface);border:1px solid var(--line);border-radius:8px;display:flex;gap:4px;padding:4px}.compact-input-tabs button{background:transparent;border-radius:6px;color:var(--muted);flex:1 1;font-size:13px;font-weight:800;min-height:34px;min-width:0;padding:7px 8px}.compact-input-tabs button.is-active{background:var(--accent-soft);color:var(--accent-strong)}.mobile-section{display:none}.mobile-section.is-mobile-active{display:block}.form.mobile-section.is-mobile-active,.stack.mobile-section.is-mobile-active{display:grid}.compact-input-form{gap:8px}.compact-input-form h2{font-size:17px;line-height:1.25;margin-bottom:0}.compact-action-row,.compact-field-row{gap:8px}.compact-field-row>.field{min-width:0}.compact-action-row .button{flex:1 1}.primary-textarea-field .textarea,.test-card-form .textarea,.test-reflection-form .textarea{min-height:58px}.compact-main-fields,.compact-optional-fields{display:none}.compact-main-fields.is-active,.compact-optional-fields.is-active{background:var(--surface-strong);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;padding:10px}.compact-main-fields.is-active{background:transparent;border-color:transparent;padding:0}.mobile-options-button{display:inline-flex;font-size:13px;min-height:40px;padding:8px 10px}.mobile-options-sheet{align-items:flex-end;background:rgba(20,26,24,.42);bottom:var(--visual-viewport-bottom);display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:55}.mobile-options-sheet.is-open{display:flex}.mobile-options-panel{background:var(--surface);border-radius:18px 18px 0 0;box-shadow:0 -12px 32px rgba(31,39,35,.18);display:grid;grid-gap:10px;gap:10px;max-height:min(72dvh,520px);max-width:640px;overflow-y:auto;padding:10px 16px calc(18px + var(--student-tabbar-safe-bottom));width:100%}.mobile-options-panel>.student-sheet-handle{display:block}.mobile-options-panel>.student-sheet-header{display:flex}.mobile-options-close{display:inline-flex;width:100%}.settings-summary{flex-wrap:nowrap;margin-top:-2px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.settings-summary::-webkit-scrollbar{display:none}.settings-summary span{flex:0 0 auto;font-size:11.5px;padding:4px 8px}.quick-setting-list{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.quick-setting-list::-webkit-scrollbar{display:none}.quick-setting-list .tag-chip{flex:0 0 auto;max-width:84vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-optional-toggle{display:inline-flex;font-size:13px;min-height:36px;padding:7px 10px;width:100%}.app-shell.has-student-tabbar .cards-page,.app-shell.has-student-tabbar .chat-list,.app-shell.has-student-tabbar .gacha-page,.app-shell.has-student-tabbar .plans-page,.app-shell.has-student-tabbar .points-page,.app-shell.has-student-tabbar .review-page,.app-shell.has-student-tabbar .test-detail-page,.app-shell.has-student-tabbar .tests-page{display:flex;flex-direction:column;height:calc(100dvh - 52px - var(--student-tabbar-height) - var(--visual-viewport-bottom));min-height:0;overflow:hidden;padding-bottom:8px;padding-top:10px}.cards-page>.page-subtitle,.chat-list>.page-subtitle,.gacha-page>.page-subtitle,.points-page>.page-subtitle,.review-page>.page-subtitle,.test-detail-page>.page-subtitle{display:none}.cards-page .grid.two,.chat-list .grid.two{display:block;flex:1 1 auto;min-height:0}.cards-page .mobile-section.is-mobile-active,.chat-list .mobile-section.is-mobile-active,.gacha-page .mobile-section.is-mobile-active{max-height:100%;overflow-y:auto;overscroll-behavior:contain}.chat-list .quick-question-form{gap:10px}.cards-page .file-note,.chat-list .quick-question-form .file-note{display:none}.chat-list .history-header{gap:8px;margin-bottom:8px}.cards-page>.panel:not(.mobile-section){display:none}.cards-page .list-item h3{font-size:16px;line-height:1.35;margin:8px 0 4px}.card-list-panel>.tag-list{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.card-list-panel>.tag-list::-webkit-scrollbar{display:none}.card-list-panel>.tag-list .tag-chip{flex:0 0 auto;min-height:30px;padding:5px 9px}.cards-page .card-question-item p:not(.page-subtitle){-webkit-line-clamp:unset;display:block;overflow:visible}.cards-page .list-item p:not(.page-subtitle){display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cards-page .review-controls{gap:8px;grid-template-columns:1fr}.app-shell.has-student-tabbar .chat-detail{display:flex;flex-direction:column;gap:8px;height:calc(100dvh - 52px - var(--student-tabbar-height) - var(--visual-viewport-bottom));min-height:0;overflow:hidden;padding-bottom:8px;padding-top:10px}.chat-detail-header{flex:0 0 auto;margin-bottom:0}.chat-detail-header .page-title{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-detail-header .page-subtitle{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-detail-actions{flex:0 0 auto;gap:6px}.chat-detail-actions .button{min-height:36px;padding:7px 9px;white-space:nowrap;width:auto}.chat-tools-toggle{display:inline-flex}.chat-detail>.grid.two{display:block;flex:1 1 auto;min-height:0}.chat-detail>.grid.two>.panel:first-child{display:grid;grid-gap:8px;gap:8px;grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0;overflow:hidden}.chat-detail .chat-window{max-height:none;min-height:0;overflow-y:auto;overscroll-behavior:contain}.chat-composer{align-items:end;display:grid;grid-gap:6px;gap:6px;grid-template-columns:minmax(0,1fr) auto}.chat-composer>.field{grid-column:1}.chat-composer>.field>span{display:none}.chat-composer .textarea{min-height:44px}.chat-composer-actions{gap:6px;grid-column:2}.chat-composer-actions .button{flex:0 0 auto;min-height:44px;padding:10px 12px;white-space:nowrap;width:auto}.chat-composer>.file-note{grid-column:1/-1}.chat-tools{display:none}.chat-tools.is-open{bottom:calc(var(--student-tabbar-height) + var(--visual-viewport-bottom) + 10px);display:grid;left:10px;max-height:min(62dvh,460px);overflow-y:auto;position:fixed;right:10px;z-index:45}.student-home .notice .page-subtitle{display:none}.student-home .notice .tabbar.compact{display:flex;flex-wrap:nowrap;gap:8px;margin:0}.student-home .notice .button{flex:1 1;font-size:13px;min-height:36px;padding:8px 10px;width:auto}.home-action-tile{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:4px;gap:4px;grid-template-columns:auto minmax(0,1fr) auto;margin:10px 0;padding:10px 12px}.home-action-tile span:last-child,.home-action-tile strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gacha-mobile-summary{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:8px 0 10px}.gacha-page>.page-title{display:none}.gacha-page{gap:7px}.gacha-page .gacha-mobile-summary{margin:0}.gacha-page .gacha-mobile-summary .home-stat{min-height:48px;padding:5px 4px}.gacha-draw-section.is-mobile-active{display:flex;flex:1 1 auto;flex-direction:column;gap:7px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px}.gacha-draw-section>.row{flex:0 0 auto}.gacha-draw-section>.row h2{font-size:17px;margin:0}.gacha-draw-section>.list{display:flex;flex-direction:column;gap:6px}.gacha-draw-section .list-item{align-items:center;display:flex;flex:0 0 auto;padding:7px 9px}.gacha-draw-section .list-item>.row{flex:1 1 auto;flex-wrap:nowrap;gap:6px}.gacha-draw-section .list-item>.row>div:first-child{min-width:70px}.gacha-draw-section .list-item>.row>.row{flex:0 0 auto;flex-wrap:nowrap;gap:5px}.gacha-draw-section .button{font-size:12px;min-height:34px;padding:6px 8px;white-space:nowrap}.gacha-draw-section .badge{padding:4px 6px;white-space:nowrap}.gacha-overlay{padding:10px}.gacha-overlay-card{display:flex;flex-direction:column;max-height:calc(100dvh - 20px);overflow:hidden;padding:20px 16px 16px}.gacha-reveal-results{min-height:0;overflow-y:auto}.gacha-overlay-close{flex:0 0 auto;margin-top:10px}.gacha-card-section.is-mobile-active{display:flex;flex:1 1 auto;flex-direction:column;gap:7px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px}.gacha-card-section>.row{align-items:center;flex:0 0 auto;flex-direction:row;gap:8px}.gacha-card-section>.row h2{font-size:17px;margin:0}.gacha-card-section>.row .badge{flex:0 0 auto}.gacha-card-section .bingo-card{flex:0 0 auto;gap:4px;max-width:min(100%,52dvh,320px)}.gacha-card-section .bingo-cell,.gacha-card-section .bingo-header{min-height:0}.bingo-rewards-details{border:1px solid var(--line);border-radius:8px;flex:0 0 auto}.bingo-rewards-details summary{color:var(--accent-strong);cursor:pointer;font-size:13px;font-weight:800;padding:9px 10px}.bingo-rewards-details[open] .bingo-rewards-list{border-top:1px solid var(--line);padding:6px}.bingo-rewards-list .list-item{padding:6px 8px}.gacha-hide-mobile{display:none}.gacha-page .bingo-card{gap:5px;margin:0 auto;max-width:340px}.gacha-page .bingo-cell{border-radius:6px;font-size:12px}.gacha-page .reach-label{font-size:8px}.gacha-page .point-meter{min-width:0}.gacha-page .list-item .page-subtitle{display:none}.gacha-guide-section .credit-guide-header{align-items:center;flex-direction:row}.gacha-guide-section .credit-guide-header h2{font-size:17px}.gacha-guide-section .credit-guide-how,.gacha-guide-section .credit-guide-intro{display:block}.gacha-guide-section .credit-guide-intro{font-size:13px;margin-bottom:0}.gacha-guide-section .credit-guide-item-row{align-items:stretch;display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr)}.gacha-guide-section .credit-guide-badges{justify-content:flex-start;text-align:left}.points-page .notice{flex:0 0 auto;margin:0 0 10px}.app-shell.has-student-tabbar .points-page{height:auto;min-height:calc(100dvh - 52px);overflow:visible;padding-bottom:calc(var(--student-tabbar-height) + var(--visual-viewport-bottom) + 20px)}.points-page .point-meter{min-width:0}.points-page .mobile-section.is-mobile-active{flex:0 0 auto;min-height:0;overflow:visible}.points-page .points-guide-section.is-mobile-active{display:block;margin-bottom:0}.points-page .points-guide-section .point-guide{min-height:0}.points-page .points-history-section.is-mobile-active{display:flex;flex:0 0 auto;flex-direction:column;min-height:0;overflow:visible}.points-page .points-history-section .row .file-note{display:none}.points-page .points-history-section .list{min-height:0;overflow:visible}.points-page .point-guide-cap .row,.points-page .point-guide-header{align-items:center;flex-direction:row}.points-page .point-guide-header h2{font-size:17px}.points-page .point-guide-cap .page-subtitle,.points-page .point-guide-how,.points-page .point-guide-intro{display:block}.points-page .point-guide-item{display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr)}.points-page .point-guide-badges{justify-content:flex-start}.plans-page>.row{flex:0 0 auto;margin-bottom:8px!important}.plans-page .page-title{font-size:20px}.plans-page .cal-subject-filter{flex:0 0 auto;flex-wrap:nowrap;margin-bottom:8px;overflow-x:auto;scrollbar-width:none}.plans-page .cal-subject-filter::-webkit-scrollbar{display:none}.plans-page .cal-toolbar{flex:0 0 auto;gap:6px;margin-bottom:8px}.plans-page .cal-toolbar-label{flex:1 0 100%;font-size:14px;order:-1;text-align:left}.plans-page .cal-toolbar .button{min-height:36px;padding:7px 10px}.plans-page .cal-toolbar-nav-spacer{display:none}.plans-page .cal-layout{flex:1 1 auto;min-height:0;overflow:hidden}.plans-page .cal-main{min-height:0;overflow-y:auto}.plans-page .cal-sidebar{display:none}.plans-page .plan-sidebar-sheet.is-open .cal-sidebar{background:transparent;border:0;display:block;max-height:none;overflow:visible;padding:0;width:auto}.plans-page .plan-sidebar-sheet.is-open .cal-sidebar-title{display:none}.plans-page .plan-sidebar-panel{max-height:min(78dvh,620px)}.plans-page .plan-sidebar-sheet.is-open .cal-plan-card .row{flex-direction:row;flex-wrap:wrap}.plans-page .plan-sidebar-sheet.is-open .cal-plan-card .button{flex-grow:1;flex-shrink:1;flex-basis:calc(50% - 4px);min-height:36px;width:auto}.plans-page .cal-day-view{display:block;max-height:none;overflow:visible}.plans-page .cal-day-header{padding:10px 12px}.plans-page .cal-day-header-actions{align-items:center;flex-direction:row;gap:5px}.plans-page .cal-day-header-actions .button{min-height:34px;padding:6px 8px}.plans-page .cal-day-tasks{gap:8px;overflow:visible;padding:10px}.plans-page .cal-day-tasks>.cal-day-item{align-items:start;display:grid;grid-gap:8px;gap:8px;grid-template-columns:auto minmax(0,1fr);padding:10px}.plans-page .cal-day-tasks>.cal-day-item>.cal-task-checkbox{grid-column:1;grid-row:1}.plans-page .cal-day-tasks>.cal-day-item>.cal-day-item-main{grid-column:2;grid-row:1}.plans-page .cal-day-tasks>.cal-day-item>.cal-day-item-main>.row{align-items:center!important;flex-direction:row;flex-wrap:wrap;justify-content:flex-start}.plans-page .cal-day-tasks>.cal-day-item>.cal-day-item-right{flex-wrap:wrap;gap:4px;grid-column:2;grid-row:2;justify-content:flex-start}.plans-page .cal-day-reflection-link{margin:10px}.plans-page .task-list-section{padding:10px}.plans-page .cal-task-list-row{align-items:flex-start;flex-wrap:wrap}.plans-page .cal-task-list-row .cal-day-item-right{margin-left:32px}.task-undo-toast{bottom:calc(76px + var(--visual-viewport-bottom));font-size:12px;width:calc(100vw - 24px)}.plans-page .plan-create-actions{margin-left:0}.test-detail-page .tab-bar,.tests-page .tab-bar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.test-detail-page .tab-bar::-webkit-scrollbar,.tests-page .tab-bar::-webkit-scrollbar{display:none}.test-detail-page .tab-button,.tests-page .tab-button{flex:0 0 auto;min-height:38px;padding:8px 12px}.test-detail-page>div:first-child,.tests-page .page-head-row{flex:0 0 auto}.tests-page .page-head-row{margin-bottom:8px!important}.tests-page .test-create-form{flex:1 1 auto;margin-bottom:8px!important;min-height:0;overflow-y:auto}.tests-page>.tab-bar{flex:0 0 auto;margin-bottom:8px!important}.tests-page>.list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.test-detail-page>.page-subtitle,.test-detail-page>.row>.button:not(.test-name-edit-button),.test-detail-page>div:first-child{display:none}.test-detail-page>.row .test-name-edit-button{flex-shrink:0}.test-detail-page>.row{flex:0 0 auto;flex-direction:row;gap:8px;margin-bottom:8px!important}.test-detail-page>.row .page-title{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.test-detail-page>.tab-bar{flex:0 0 auto;margin-bottom:8px!important}.test-card-workspace,.test-detail-page>.stack,.test-plan-workspace,.test-reflection-workspace{flex:1 1 auto;min-height:0;overflow:hidden}.test-card-workspace,.test-plan-workspace,.test-reflection-workspace{display:grid;grid-gap:10px;gap:10px;grid-template-rows:auto minmax(0,1fr)}.card-view-tabs,.plan-view-tabs,.reflection-view-tabs{margin-bottom:0}.test-card-form,.test-plan-form,.test-reflection-form{align-content:start;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.test-card-form .file-note,.test-plan-form .file-note,.test-reflection-form .file-note{display:none}.test-card-workspace>.panel:not(.form),.test-plan-workspace .view-list-pane,.test-reflection-workspace>.stack{min-height:0;overflow-y:auto;overscroll-behavior:contain}.test-reflection-form .list-item{font-size:12px!important;max-height:52px;overflow:hidden;padding:8px}.review-page{gap:8px}.review-page>.tag-list{flex:0 0 auto;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.review-page>.tag-list::-webkit-scrollbar{display:none}.review-page>.empty,.review-page>.panel,.review-page>.stack{flex:1 1 auto;min-height:0}.review-page article.panel:not(.review-runner){overflow-y:auto}.review-page>.review-advanced-filters{flex:1 1 auto;min-height:220px;overflow-y:auto;overscroll-behavior:contain}.review-runner{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto auto;max-height:100%;overflow:hidden}.review-runner h2{font-size:20px;line-height:1.35;margin:0;max-height:18dvh;overflow-y:auto}.review-runner .card{max-height:24dvh;overflow-y:auto}.app-shell:has(.review-runner) .student-tabbar,.app-shell:has(.review-runner) .topbar{display:none}.app-shell.has-student-tabbar:has(.review-runner) .review-page,.app-shell:has(.review-runner) .review-page{height:100dvh;max-width:none;padding:8px 10px}.app-shell:has(.review-runner) .review-page>.page-subtitle,.app-shell:has(.review-runner) .review-page>.page-title,.app-shell:has(.review-runner) .review-page>.tag-list{display:none}.app-shell:has(.review-runner) .review-runner{border-radius:0;box-shadow:none;height:100%}.test-review-panel{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.test-review-panel .page-subtitle{display:none}.test-review-card{flex:1 1 auto;min-height:0;overflow:hidden}.test-review-card .list-item{max-height:28dvh;overflow-y:auto}}@media (max-width:520px){.reflection-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reflection-history{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.reflection-date-label strong{font-size:15px}}