.portal .teach,.portal .t-mine{--t-today:#f1f4ec;--t-unrec:#6f776c;--t-lesson-fill:#e1e6da}.portal .t-sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.portal .t-intro h1{max-width:820px}.portal .t-intro .p-btn.primary{flex-shrink:0}.portal .t-card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.portal .t-card-head h2{margin:0}.portal .t-foot{margin-top:16px}.portal .t-lead{margin:-8px 0 16px}.portal .t-section{margin-top:23px}.portal .t-section>h2{margin-bottom:12px}.portal .t-note{margin-top:14px}.portal .t-legend{color:var(--p-muted);flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.portal .t-legend li{align-items:center;gap:7px;display:inline-flex}.portal .t-swatch{background:var(--kind);vertical-align:-1px;border-radius:3px;flex-shrink:0;width:12px;height:12px;display:inline-block}.portal .t-swatch.unverified{background:var(--p-card);border:1.5px dashed var(--t-unrec)}.portal .t-pen{color:var(--p-gold);font-size:13px;line-height:1}.portal .t-weeknav{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 20px;display:flex}.portal .t-weeknav-step{border:1px solid var(--p-line);background:var(--p-card);width:44px;height:44px;color:var(--p-green);border-radius:8px;place-items:center;font-size:22px;line-height:1;text-decoration:none;display:inline-grid}.portal span.t-weeknav-step{color:#c3cabd;background:0 0}.portal a.t-weeknav-step:hover{background:var(--p-sage)}.portal .t-weeknav-label{min-width:150px;padding:0 4px;line-height:1.25;display:grid}.portal .t-weeknav-label strong{letter-spacing:.1em;text-transform:uppercase;color:var(--p-muted);font-size:12px;font-weight:650}.portal .t-weeknav-label span{font:22px Georgia,Iowan Old Style,serif}.portal .t-weeknav-today{align-items:center;min-height:44px;margin-left:6px;font-size:13px;display:inline-flex}.portal .t-stats .p-number small{color:var(--p-muted);letter-spacing:0;margin-left:6px;font:14px system-ui,sans-serif}.portal .t-stats .p-stat .p-muted{min-height:1.6em}.portal .t-stats.five{grid-template-columns:repeat(2,minmax(0,1fr))}.portal .t-stats.five .p-stat:last-child{grid-column:1/-1}@container stats (width>=520px){.portal .t-stats.five{grid-template-columns:repeat(3,minmax(0,1fr))}.portal .t-stats.five .p-stat:last-child{grid-column:span 2}}@container stats (width>=940px){.portal .t-stats.five{grid-template-columns:repeat(5,minmax(0,1fr))}.portal .t-stats.five .p-stat:last-child{grid-column:auto}}.portal .t-level{line-height:46px;font-size:30px!important}.portal .t-attention{background:#f3ecda;border:1px solid #e4d6b5;border-radius:14px;gap:16px;margin-bottom:23px;padding:20px 24px;display:flex}.portal .t-attention-icon{color:var(--p-gold);font-size:20px;line-height:1.3}.portal .t-attention strong{margin-bottom:6px;display:block}.portal .t-attention ul{margin:0 0 8px;padding-left:18px;font-size:14px}.portal .t-attention li{margin:3px 0}.portal .t-attention a{font-weight:600}.portal .t-week-card{padding-bottom:22px}.portal .t-grid{display:grid}.portal .t-grid-row{border-bottom:1px solid var(--p-line);grid-template-columns:minmax(170px,1.35fr) repeat(7,minmax(62px,1fr)) minmax(118px,.95fr);align-items:stretch;display:grid}.portal .t-grid-row:last-child{border-bottom:0}.portal .t-grid-head{border-bottom:1px solid var(--p-line)}.portal .t-grid-head span{letter-spacing:.08em;text-transform:uppercase;color:var(--p-muted);text-align:center;padding:0 8px 12px;font-size:12px;font-weight:600}.portal .t-grid-head span:first-child,.portal .t-grid-head span:last-child{text-align:left}.portal .t-grid-head span b{font-weight:650}.portal .t-grid-head span.today{color:var(--p-green)}.portal .t-student{align-items:center;gap:12px;min-width:0;padding:14px 10px 14px 0;display:flex}.portal .t-student>div{min-width:0;display:grid}.portal .t-student a{color:var(--p-ink);overflow-wrap:anywhere;margin-block:-11px;padding-block:11px;font-size:14px;font-weight:650;text-decoration:none;display:inline-block}.portal .t-student a:hover{color:var(--p-green);text-decoration:underline}.portal .t-student small{color:var(--p-muted);font-size:12px}.portal .t-avatar{background:var(--p-sage);color:#2f4a3c;border-radius:50%;flex-shrink:0;place-items:center;width:38px;height:38px;font:15px Georgia,serif;display:inline-grid}.portal .t-avatar.muted{color:var(--p-muted);background:#eff0e9}.portal .t-avatar.large{width:64px;height:64px;font-size:24px}.portal .t-day{color:var(--p-ink);border:1px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:5px;min-height:62px;margin:5px 3px;padding:10px 4px;text-decoration:none;display:flex}.portal .t-day:hover{border-color:var(--p-line);background:#fbfaf4}.portal .t-day.today{background:var(--t-today)}.portal .t-day.future>:not(.t-lesson-tag){opacity:.45}.portal .t-day-name{display:none}.portal .t-pills{flex-wrap:wrap;justify-content:center;gap:3px;display:flex}.portal .t-pill{background:var(--kind);color:#fff;font-variant-numeric:tabular-nums;border-radius:5px;place-items:center;min-width:24px;height:22px;padding:0 6px;font-size:12px;font-weight:650;display:inline-grid}.portal .t-pill.unverified{background:var(--p-card);color:#3f463d;border:1.5px dashed var(--t-unrec)}.portal .t-day-time{text-align:center;color:var(--p-muted);font-variant-numeric:tabular-nums;font-size:12px;line-height:1.25}.portal .t-day-none{background:#dfe3d8;border-radius:50%;width:6px;height:6px}.portal span.t-day-none:not(:empty){width:auto;height:auto;color:var(--p-muted);background:0 0;font-size:12px}.portal .t-total{align-content:center;padding:10px 0 10px 12px;display:grid}.portal .t-total strong{font-size:14px}.portal .t-total small{color:var(--p-muted);font-size:12px;line-height:1.4}.portal .t-others{margin:0;padding:0;list-style:none}.portal .t-others li{border-top:1px solid var(--p-line);align-items:center;gap:12px;padding:14px 0;display:flex}.portal .t-others li:first-child{border-top:0;padding-top:0}.portal .t-others li>div{flex:1;min-width:0;display:grid}.portal .t-others a{align-items:center;min-height:44px;font-weight:650;display:inline-flex}.portal .t-others small{color:var(--p-muted);font-size:12px}.portal .t-settings{margin-top:23px}.portal .t-settings summary{min-height:44px;color:var(--p-ink);justify-content:space-between;align-items:center;padding:0;list-style:none;display:flex}.portal .t-settings summary::-webkit-details-marker{display:none}.portal .t-settings summary h2{margin:0;font-size:22px}.portal .t-settings summary:after{content:"Show";color:var(--p-green);text-underline-offset:4px;font-size:13px;text-decoration:underline}.portal .t-settings[open] summary:after{content:"Hide"}.portal .t-settings[open] summary{margin-bottom:20px}.portal .t-danger{border-top:1px solid var(--p-line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:24px;padding-top:20px;display:flex}.portal .t-danger>div{max-width:620px}.portal .p-modal.t-dialog h2{font-size:29px}.portal .t-link{border:1px solid var(--p-line);width:100%;color:var(--p-ink);background:#edf0e5;border-radius:8px;margin-top:8px;padding:12px;font-size:13px}.portal .t-start{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:23px;display:grid}.portal .t-start-list ul{margin:0 0 18px;padding:0;list-style:none}.portal .t-start-list li{border-top:1px solid var(--p-line);padding:12px 0;font-size:14px}.portal .t-start-list li:first-child{border-top:0;padding-top:0}.portal .t-start-list strong{margin-bottom:2px;display:block}.portal .t-crumbs{color:var(--p-muted);align-items:center;gap:10px;margin-bottom:20px;font-size:13px;display:flex}.portal .t-crumbs a{align-items:center;min-height:44px;display:inline-flex}.portal .t-student-head{flex-wrap:wrap;align-items:flex-start;gap:22px;margin-bottom:28px;display:flex}.portal .t-student-title{flex:1;min-width:260px}.portal .t-student-title h1{font-size:clamp(36px,4vw,52px)}.portal .t-student-title>.p-muted{margin-top:10px}.portal .t-badges{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.portal .t-student-actions{max-width:460px}.portal .t-confirm{background:#fbf1ed;border:1px solid #dfbcb2;border-radius:12px;padding:16px 18px;font-size:14px}.portal .t-confirm p{margin-bottom:12px}.portal .t-rename{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.portal .t-rename input{background:var(--p-card);color:var(--p-ink);border:1px solid #b6c2ad;border-radius:8px;max-width:100%;padding:6px 10px;font:28px Georgia,serif}.portal .t-columns{grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);align-items:start;gap:23px;display:grid}.portal .t-columns.single{grid-template-columns:minmax(0,720px);margin-top:23px}.portal .t-main,.portal .t-side{gap:23px;min-width:0;display:grid}.portal .t-cal{grid-template-columns:44px minmax(0,1fr);gap:6px;display:grid;position:relative}.portal .t-cal-axis{height:360px;color:var(--p-muted);font-variant-numeric:tabular-nums;margin-top:52px;font-size:12px;position:relative}.portal .t-cal-axis span{white-space:nowrap;position:absolute;right:4px;transform:translateY(-50%)}.portal .t-cal-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.portal .t-cal-day{grid-template-rows:46px 360px;gap:6px;min-width:0;display:grid}.portal .t-cal-head{color:var(--p-ink);cursor:pointer;line-height:1.1;font:inherit;background:0 0;border:1px solid #0000;border-radius:8px;place-items:center;padding:4px 0;display:grid}.portal .t-cal-head b{letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);font-size:12px;font-weight:650}.portal .t-cal-head span{font:18px Georgia,serif}.portal .t-cal-head:hover{background:#f3f5ee}.portal .t-cal-day.today .t-cal-head b{color:var(--p-green)}.portal .t-cal-day.selected .t-cal-head{border-color:var(--p-green);background:var(--p-sage)}.portal .t-cal-track{background:#fbfbf6;border:1px solid #e8ebe2;border-radius:8px;position:relative;overflow:hidden}.portal .t-cal-day.today .t-cal-track{background:var(--t-today)}.portal .t-cal-day.selected .t-cal-track{border-color:#b8c7b0}.portal .t-cal-day.future .t-cal-track{background:repeating-linear-gradient(135deg,#f6f6f1 0 6px,#fbfbf6 6px 12px)}.portal .t-cal-line{border-top:1px solid #eceee6;position:absolute;left:0;right:0}.portal .t-sitting{background:var(--p-card);cursor:pointer;box-shadow:0 0 0 2px var(--p-card);border:0;border-radius:5px;flex-direction:row;gap:2px;padding:0;display:flex;position:absolute;left:4px;right:4px;overflow:hidden}.portal .t-sitting:hover,.portal .t-sitting:focus-visible{box-shadow:0 0 0 2px var(--p-card), 0 0 0 4px var(--p-green);outline:none}.portal .t-seg{background:var(--kind);min-width:4px;display:block}.portal .t-seg.unverified{border:1.5px dashed var(--t-unrec);background:#eef0ea;border-radius:4px}.portal .t-sitting-pen{color:#fff;text-shadow:0 0 2px #0006;font-size:12px;position:absolute;top:1px;right:3px}.portal .t-tooltip{background:var(--p-ink);color:#f6f5ee;pointer-events:none;z-index:2;border-radius:8px;gap:3px;padding:9px 12px;font-size:12px;display:grid;position:absolute;top:0;right:0;box-shadow:0 8px 24px #17372730}.portal .t-tooltip .t-swatch{width:9px;height:9px;margin-right:6px;box-shadow:0 0 0 1px #fff4}.portal .t-cal-empty{margin-top:12px}.portal .t-passes,.portal .t-corrections,.portal .t-struggles{margin:0;padding:0;list-style:none}.portal .t-passes li,.portal .t-corrections li{border-top:1px solid var(--p-line)}.portal .t-passes li:first-child,.portal .t-corrections li:first-child{border-top:0}.portal .t-pass{text-align:left;width:100%;font:inherit;color:var(--p-ink);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;min-height:56px;padding:12px 6px;display:flex}.portal .t-pass:hover{background:#f6f7f1}.portal .t-pass-main{flex:1;min-width:0;display:grid}.portal .t-pass-main strong{overflow-wrap:anywhere;font-size:14px;font-weight:650}.portal .t-pass-main small{color:var(--p-muted);font-size:12px}.portal .t-grade{text-align:right;font-variant-numeric:tabular-nums;min-width:40px;font:22px Georgia,serif}.portal .t-grade.small{white-space:nowrap;font-size:15px}.portal .t-grade.none{color:var(--p-muted);white-space:nowrap;font:12px system-ui,sans-serif}.portal .t-corrected{color:var(--p-gold);white-space:nowrap;font-size:12px;font-weight:650}.portal .t-audio{color:var(--p-green);font-size:12px}.portal .t-self{border-top:1px solid var(--p-line);margin-top:12px;padding-top:4px}.portal .t-self ul{margin:4px 0 10px;padding:0;font-size:13px;list-style:none}.portal .t-self li{align-items:center;gap:10px;padding:6px 0;display:flex}.portal .t-struggles li{border-top:1px solid var(--p-line);padding:16px 0}.portal .t-struggles li:first-child{border-top:0;padding-top:0}.portal .t-struggles p{margin-top:6px;font-size:14px}.portal .t-chips{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.portal .t-chip{border:1px solid var(--p-line);background:var(--p-card);color:var(--p-green);cursor:pointer;border-radius:999px;min-height:44px;padding:6px 12px;font-size:12px}.portal .t-chip:hover{background:var(--p-sage)}.portal .t-compose textarea,.portal .t-notes textarea,.portal .t-review-note textarea{background:var(--p-card);width:100%;color:var(--p-ink);resize:vertical;border:1px solid #b6c2ad;border-radius:8px;padding:11px 12px;font:15px/1.5 system-ui,sans-serif}.portal .t-compose-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;display:flex}.portal .t-compose-date{color:var(--p-muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.portal .t-compose-date input{border:1px solid var(--p-line);background:var(--p-card);color:var(--p-ink);border-radius:7px;min-height:44px;padding:8px}.portal .t-segmented{border:1px solid var(--p-line);background:#f4f5ef;border-radius:8px;gap:2px;margin:0;padding:3px;display:inline-flex}.portal .t-segmented label{cursor:pointer;color:var(--p-muted);border-radius:6px;align-items:center;min-height:44px;padding:7px 10px;font-size:12px;display:inline-flex}.portal .t-segmented label.on{background:var(--p-card);color:var(--p-green);font-weight:650;box-shadow:0 1px 3px #263d3418}.portal .t-segmented input{opacity:0;pointer-events:none;position:absolute}.portal .t-segmented label:focus-within{outline:3px solid var(--p-gold);outline-offset:1px}.portal .t-notes{margin:20px 0 0;padding:0;list-style:none}.portal .t-notes li{border-top:1px solid var(--p-line);padding:16px 0}.portal .t-note-meta{flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.portal .t-note-meta .p-link{min-height:0;padding:0}.portal .t-note-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;margin-top:8px!important}.portal .t-note-actions{gap:16px;margin-top:4px;display:flex}.portal .t-note-actions .p-link{min-width:44px;min-height:44px;padding:10px 4px}.portal .t-notes-empty{margin-top:16px}.portal .t-trend-plot{grid-template-columns:repeat(auto-fit,minmax(0,1fr));align-items:end;gap:6px;height:170px;display:grid}.portal .t-trend-week{height:100%;color:var(--p-muted);border-radius:6px;grid-template-rows:18px 1fr 38px;padding:0 2px;text-decoration:none;display:grid}.portal .t-trend-week:hover,.portal .t-trend-week:focus-visible{background:#f3f5ee}.portal .t-trend-value{text-align:center;font-variant-numeric:tabular-nums;color:var(--p-ink);align-self:end;font-size:12px}.portal .t-trend-bar{border-radius:4px 4px 0 0;flex-direction:column-reverse;place-self:end center;gap:2px;width:70%;min-height:0;display:flex;overflow:hidden}.portal .t-trend-bar i{background:var(--kind);min-height:2px;display:block}.portal .t-trend-axis{text-align:center;border-top:1px solid var(--p-line);align-content:start;justify-items:center;padding-top:4px;font-size:12px;line-height:1.25;display:grid}.portal .t-trend-week.current .t-trend-axis{color:var(--p-green);font-weight:650}.portal .t-trend-readout{color:var(--p-muted);min-height:3.2em;margin-top:10px;font-size:12px}.portal .p-modal.t-review{width:calc(100% - 32px);max-width:1040px;padding:0}.portal .t-review>*{padding-left:28px;padding-right:28px}.portal .t-review-head{border-bottom:1px solid var(--p-line);background:var(--p-card);z-index:2;align-items:flex-start;gap:20px;padding-top:26px;padding-bottom:18px;display:flex;position:sticky;top:0}.portal .t-review-head>div:first-child{flex:1;min-width:0}.portal .t-review-head .p-label{align-items:center;gap:8px;margin-bottom:8px;display:flex}.portal .t-review-head h2{overflow-wrap:anywhere;margin:0 0 6px;font-size:30px}.portal .t-review-grade{text-align:right;justify-items:end;display:grid}.portal .t-review-grade strong{font:44px/1 Georgia,serif}.portal .t-review-grade span{color:var(--p-muted);font-size:12px}.portal .t-review-grade small{color:var(--p-gold);max-width:170px;margin-top:4px;font-size:12px}.portal .t-close{border:1px solid var(--p-line);background:var(--p-card);width:44px;height:44px;color:var(--p-ink);cursor:pointer;border-radius:8px;flex-shrink:0;font-size:22px;line-height:1}.portal .t-close:hover{background:var(--p-sage)}.portal .t-review-listen{padding-top:20px}.portal .t-review-listen audio{width:100%;height:44px}.portal .t-bars{flex-wrap:wrap;gap:4px;margin-top:12px;display:flex}.portal .t-bar{border:1px solid var(--p-line);min-width:44px;height:44px;color:var(--p-muted);font-variant-numeric:tabular-nums;cursor:pointer;background:#f8f9f4;border-radius:6px;padding:0 6px;font-size:12px;position:relative}.portal .t-bar:disabled{cursor:default;opacity:1}.portal .t-bar:not(:disabled):hover{border-color:var(--p-green)}.portal .t-bar.marked{color:#6b4f16;background:#f2ead9;border-color:#e0cfa8;font-weight:650}.portal .t-bar.heavy{background:#ead8b0;border-color:#cfb27a}.portal .t-bar.playing{background:var(--p-green);border-color:var(--p-green);color:#fff}.portal .t-bar i{color:var(--p-gold);background:var(--p-card);border-radius:50%;width:16px;height:16px;font-size:12px;font-style:normal;line-height:16px;position:absolute;top:-6px;right:-4px;box-shadow:0 0 0 1px #e0cfa8}.portal .t-bars-key{margin-top:8px}.portal .t-paper{border:1px solid var(--p-line);background:#fff;border-radius:12px;margin:20px 28px 0;padding:16px;overflow-x:auto}.portal .t-review-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;padding-top:24px;display:grid}.portal .t-review-grid h3{margin-bottom:12px;font-size:20px}.portal .t-review-grid h3:not(:first-child){margin-top:24px}.portal .t-review-grid h4{letter-spacing:.1em;text-transform:uppercase;color:var(--p-muted);margin:16px 0 6px;font-size:12px;font-weight:650}.portal .t-trouble,.portal .t-marks,.portal .t-log{margin:0;padding:0;font-size:14px;list-style:none}.portal .t-trouble li{border-top:1px solid var(--p-line);padding:10px 0}.portal .t-trouble li:first-child{border-top:0;padding-top:0}.portal .t-trouble p{margin-top:4px!important}.portal .t-marks li{border-bottom:1px dashed #e3e6dc;justify-content:space-between;gap:12px;padding:7px 0;display:flex}.portal .t-marks b{font-variant-numeric:tabular-nums;color:var(--p-red);white-space:nowrap;font-weight:600}.portal .t-marks li.corrected span{color:var(--p-muted);text-decoration:line-through}.portal .t-marks em{color:var(--p-gold);text-align:right;font-size:12px;font-style:normal}.portal .t-log li{gap:12px;padding:6px 0;display:flex}.portal .t-log span{color:var(--p-muted);white-space:nowrap;padding-top:2px;font-size:12px}.portal .t-review-note{border-top:1px solid var(--p-line);gap:8px;margin-top:24px;padding-top:20px;padding-bottom:26px;display:grid}.portal .t-check{align-items:center;gap:8px;min-height:44px;font-size:13px;display:inline-flex}.portal .t-join{max-width:760px;margin:0 auto}.portal .t-join h1{font-size:clamp(34px,4vw,48px)}.portal .t-join-lead{color:var(--p-muted);margin:16px 0 8px;font-size:16px}.portal .t-join-sub{margin:26px 0 10px!important;font-size:20px!important}.portal .t-join-list{margin:0;padding-left:20px;font-size:14px}.portal .t-join-list li{margin:6px 0}.portal .t-choice{border:1px solid var(--p-line);cursor:pointer;background:#fcfcf8;border-radius:10px;align-items:flex-start;gap:12px;margin-top:10px;padding:14px 16px;display:flex}.portal .t-choice input{width:20px;height:20px;accent-color:var(--p-green);flex-shrink:0;margin-top:2px}.portal .t-choice span{display:grid}.portal .t-choice strong{font-size:14px}.portal .t-choice small{color:var(--p-muted);font-size:12px}.portal .t-join-note{margin:18px 0}.portal .t-mine-item{padding-top:4px}.portal .t-mine-item+.t-mine-item{border-top:1px solid var(--p-line);margin-top:20px;padding-top:20px}.portal .t-mine-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.portal .t-mine-notes{margin:12px 0}.portal .t-mine-notes .p-label{margin-bottom:6px}.portal .t-mine-notes blockquote{background:#f7f8f3;border-left:2px solid #b2c9b9;border-radius:0 8px 8px 0;margin:8px 0;padding:8px 14px}.portal .t-mine-notes blockquote p{white-space:pre-wrap;font-size:14px}.portal .t-mine-notes small{color:var(--p-muted);font-size:12px}.portal .t-mine .t-confirm{margin-top:12px}@media (width<=1200px){.portal .t-columns{grid-template-columns:minmax(0,1fr)}.portal .t-side{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}}@media (width<=1050px){.portal .t-grid-row{grid-template-columns:minmax(150px,1.2fr) repeat(7,minmax(46px,1fr)) minmax(96px,.8fr)}.portal .t-start{grid-template-columns:1fr}}@media (width<=860px){.portal .t-grid-head{display:none}.portal .t-grid-row{grid-template-columns:repeat(7,minmax(0,1fr));row-gap:6px;padding:14px 0}.portal .t-student{grid-column:1/-1;padding:0}.portal .t-total{flex-wrap:wrap;grid-column:1/-1;align-items:baseline;gap:8px;padding:0;display:flex}.portal .t-day{gap:3px;min-height:58px;margin:0 2px;padding:6px 2px}.portal .t-day-name{letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);font-size:12px;display:block}.portal .t-pill{min-width:18px;height:18px;padding:0 4px;font-size:12px}.portal .t-day-time{display:none}.portal .t-review-grid{grid-template-columns:1fr}}@media (width<=699px){.portal .t-intro .p-btn.primary{width:100%}.portal .t-attention{padding:16px}.portal .t-cal{grid-template-columns:30px minmax(0,1fr);gap:3px}.portal .t-cal-axis,.portal .t-cal-day{--h:300px}.portal .t-cal-axis{height:300px;font-size:12px}.portal .t-cal-day{grid-template-rows:46px 300px}.portal .t-cal-days{gap:3px}.portal .t-sitting{left:2px;right:2px}.portal .t-student-head{gap:14px}.portal .t-avatar.large{width:48px;height:48px;font-size:18px}.portal .t-student-actions{width:100%;max-width:none}.portal .t-side{grid-template-columns:1fr}.portal .p-modal.t-review{border-radius:0;width:100%;max-width:100%;max-height:100dvh}.portal .t-student-actions .p-actions{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.portal .t-student-actions .p-btn{padding-inline:8px}.portal .t-review>*{padding-left:18px;padding-right:18px}.portal .t-paper{margin:16px 18px 0;padding:8px}.portal .t-review-head{flex-wrap:wrap}.portal .t-review-head h2{font-size:24px}.portal .t-review-grade{text-align:left;order:3;justify-items:start}.portal .t-review-grade strong{font-size:34px}.portal .t-weeknav-label span{font-size:19px}.portal .t-compose-row .p-btn{width:100%}}.portal .t-trend-plot{margin:0;padding:0;list-style:none}.portal .t-trend-plot li{min-width:0;height:100%}.portal .t-bar sup{margin-left:1px;font-size:12px}.portal .t-section td:last-child{text-align:right}.portal .t-card-head:has(>h2:only-child){margin-bottom:12px}@media (width<=699px){.portal .t-section td:last-child{text-align:left}}.portal .t-seat-note{margin-top:2px;font-size:12px}.portal .t-age{margin-top:18px}.portal .t-age-fields{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:14px;max-width:460px;margin-top:16px;display:grid}.portal .t-guardian{background:#fbf7ec;border:1px solid #e0cfa8;border-radius:12px;min-width:0;margin:20px 0 0;padding:18px 20px 20px}.portal .t-guardian legend{float:left;width:100%;margin:0 0 4px;padding:0;font:21px/1.25 Georgia,Iowan Old Style,serif}.portal .t-guardian legend+*{clear:both}.portal .t-guardian>.p-muted{margin:2px 0 14px}.portal .t-guardian .p-fields{align-items:start;margin-top:4px}.portal .t-relationship{flex-wrap:wrap;gap:22px;margin:-2px 0 6px;display:flex}.portal .t-radio{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-size:14px;display:inline-flex}.portal .t-radio input{width:18px;height:18px;accent-color:var(--p-green)}.portal .t-consent{background:var(--p-card)}.portal .t-consent small{color:var(--p-ink);margin-top:4px;font-size:13px;line-height:1.55}.portal .t-mine-item>.p-muted{margin-top:6px}.portal .t-lesson-key{background:var(--t-lesson-fill);border-left:3px solid var(--p-ink);border-radius:3px;flex:none;width:13px;height:13px}.portal .t-lesson-tag{color:var(--p-ink);background:var(--t-lesson-fill);border-left:3px solid var(--p-ink);white-space:nowrap;border-radius:3px;order:-1;gap:4px;padding:1px 6px 1px 5px;font-size:12px;font-weight:650;line-height:1.45;display:inline-flex}.portal .t-lesson-tag i{font-style:normal}.portal .t-lesson-tag b{font-weight:500}.portal .t-cal-lesson{background:var(--t-lesson-fill);border-top:2px solid var(--p-ink);color:var(--p-ink);flex-direction:column;gap:0;padding:1px 2px;font-size:12px;line-height:1.05;display:flex;position:absolute;left:0;right:0;overflow:hidden}.portal .t-cal-lesson b{font-weight:650}.portal .t-cal-lesson span{white-space:nowrap;text-overflow:ellipsis;word-spacing:-.2em;overflow:hidden}.portal .t-lesson-line{flex-wrap:wrap;align-items:center;gap:9px;margin-top:12px;font-size:14px;display:flex}.portal .t-lesson-line .p-link{min-height:44px;padding:0}.portal .t-lesson-form{border:1px solid var(--p-line);background:var(--p-card);border-radius:12px;grid-template-columns:repeat(3,minmax(0,190px));align-items:start;gap:0 14px;max-width:640px;margin-top:16px;padding:18px 18px 14px;display:grid}.portal .t-lesson-form>.p-actions,.portal .t-lesson-form>.p-notice,.portal .t-lesson-form>.p-muted{grid-column:1/-1}.portal .t-lesson-form>.p-muted{margin-top:10px}.portal .t-lesson-form .p-field input,.portal .t-lesson-form .p-field select{height:48px;min-height:48px}.portal .t-lesson-form>.p-notice{margin:12px 0 0}.portal .t-lesson-form .p-link{margin-left:4px}@media (width<=699px){.portal .t-lesson-tag{border-left-width:2px;order:99;padding:0 3px 0 2px;font-size:12px}.portal .t-lesson-tag i{display:none}.portal .t-lesson-form{grid-template-columns:minmax(0,1fr)}}.portal .t-join-card h1+.p-notice{margin-top:22px}.portal .t-notes-week{letter-spacing:.1em;text-transform:uppercase;color:var(--p-muted);margin:22px 0 0;font:650 12px/1.4 system-ui,sans-serif}.portal .t-notes-week .p-muted{letter-spacing:.1em;font-size:12px}.portal .t-notes-week+.t-notes{margin-top:8px}.portal .t-notes-all{align-items:center;gap:6px;min-height:44px;margin-top:6px;font-size:13px;font-weight:600;display:inline-flex}.portal .t-note-body.clamp{-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.portal .t-note-take{text-align:left;align-items:center;gap:5px;display:inline-flex}.portal .t-note-take>span[aria-hidden]{font-size:12px}.portal .t-earlier{background:#f6f3e8;border-color:#e3dcc6}.portal .t-earlier .p-label{margin-bottom:6px}.portal .t-earlier h2{margin-bottom:4px;font-size:22px}.portal .t-earlier .t-notes{margin-top:10px}.portal .t-earlier .t-notes li{border-top-color:#e3dcc6;padding:12px 0}.portal .t-notes-tools{flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 22px;display:flex}.portal .t-notes-search{flex:280px;max-width:420px}.portal .t-notes-tools input,.portal .t-notes-tools select{background:var(--p-card);width:100%;min-height:46px;color:var(--p-ink);border:1px solid #b6c2ad;border-radius:8px;padding:10px 12px;font-size:15px}.portal .t-notes-filter{flex:0 230px}.portal .t-timeline{gap:18px;margin:0;padding:0 0 0 26px;list-style:none;display:grid;position:relative}.portal .t-timeline:before{content:"";border-left:2px solid var(--p-line);position:absolute;top:8px;bottom:8px;left:7px}.portal .t-period{position:relative}.portal .t-period:before{content:"";background:var(--p-card);border:3px solid var(--p-ink);border-radius:50%;width:12px;height:12px;position:absolute;top:34px;left:-25px}.portal .t-period-head{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.portal .t-period-head h2{margin:0;font-size:24px}.portal .t-period-link{align-items:center;gap:6px;min-height:44px;margin-left:auto;font-size:13px;font-weight:600;display:inline-flex}.portal .t-period-body{grid-template-columns:minmax(0,1.45fr) minmax(250px,1fr);align-items:start;gap:28px;margin-top:14px;display:grid}.portal .t-period .t-notes{margin-top:0}.portal .t-period .t-notes li:first-child{border-top:0;padding-top:4px}.portal .t-played{background:#f4f6ef;border:1px solid #e3e8dc;border-radius:12px;min-width:0;padding:14px 16px 12px}.portal .t-played .p-label{margin-bottom:6px}.portal .t-played-sum{font-size:13px}.portal .t-played-list{margin:10px 0 0;padding:0;list-style:none}.portal .t-played-list li+li{border-top:1px solid #e3e8dc}.portal .t-played-list.expanded{overscroll-behavior:contain;scrollbar-gutter:stable;border-bottom:1px solid #e3e8dc;max-height:372px;padding-right:4px;overflow-y:auto}.portal .t-played-row{width:calc(100% + 12px);min-height:48px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;margin:0 -6px;padding:7px 6px;display:flex}.portal .t-played-row:hover{background:#ebefe4}.portal .t-played-main{flex:1;min-width:0;display:grid}.portal .t-played-title{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;overflow:hidden}.portal .t-played-main small{color:var(--p-muted);font-size:12px}.portal .t-played-grade{font-variant-numeric:tabular-nums;flex:none;font:18px Georgia,serif}.portal .t-played-more{min-height:40px;padding:6px 0 2px;font-size:13px}.portal .t-played-others{color:var(--p-muted);border-top:1px solid #e3e8dc;padding-top:9px;font-size:12px;margin-top:8px!important}.portal .t-note-take{min-width:0;max-width:100%}.portal .t-note-take-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}@media (width<=699px){.portal .t-timeline{padding-left:18px}.portal .t-timeline:before{left:3px}.portal .t-period:before{width:10px;height:10px;top:28px;left:-20px}.portal .t-period-link{margin-left:0}.portal .t-period-body{grid-template-columns:minmax(0,1fr);gap:16px}.portal .t-notes-search,.portal .t-notes-filter{flex:100%;max-width:none}}.portal .t-preview{color:var(--p-ink);background:linear-gradient(90deg,#f8f3e4,#fbf8ee);border:1px solid #e6ddc4;border-radius:12px;align-items:flex-start;gap:11px;margin:0 0 24px;padding:11px 16px;display:flex}.portal .t-preview-mark{color:var(--p-gold);flex:none;margin-top:1px}.portal .t-preview p{color:#4c5547;font-size:13px;line-height:1.55}.portal .t-preview strong{color:var(--p-ink);font-weight:650}.portal .t-preview-tag{color:var(--p-gold);letter-spacing:.1em;text-transform:uppercase;vertical-align:1px;background:#efe5c9;border-radius:999px;margin-right:4px;padding:1px 7px;font-size:12px;font-weight:700;display:inline-block}@media (width<=699px){.portal .t-preview{margin-bottom:18px;padding:10px 13px}}.portal{--p-bg:#f5f4ee;--p-card:#fffef9;--p-ink:#263d34;--p-muted:#626c61;--p-green:#315747;--p-line:#d7ded0;--p-sage:#e6ecdf;--p-gold:#826329;--p-red:#963d35;background:var(--p-bg);min-height:100dvh;color:var(--p-ink);-webkit-user-select:text;user-select:text;height:100dvh;font:15px/1.6 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-y:auto}.portal *{box-sizing:border-box}.portal h1,.portal h2,.portal h3{margin:0;font-family:Georgia,Iowan Old Style,serif;font-weight:400;line-height:1.15}.portal h1{letter-spacing:-1.7px;font-size:clamp(37px,4.4vw,60px)}.portal h2{letter-spacing:-.4px;font-size:27px}.portal h3{font-size:21px}.portal p{margin:0}.portal a{color:var(--p-green);text-underline-offset:4px}.portal button,.portal input,.portal select,.portal textarea{font:inherit;touch-action:manipulation}.portal button:disabled{opacity:.6;cursor:not-allowed}.portal button:focus-visible,.portal a:focus-visible,.portal input:focus-visible,.portal textarea:focus-visible,.portal select:focus-visible{outline:3px solid var(--p-gold);outline-offset:4px}.portal .p-skip{z-index:100;background:var(--p-card);padding:12px;position:absolute;top:-80px;left:20px}.portal .p-skip:focus{top:10px}.portal .p-brand{align-items:center;min-height:44px;font-size:30px;text-decoration:none;display:inline-flex}.portal .p-top{border-bottom:1px solid var(--p-line);justify-content:space-between;align-items:center;gap:20px;padding:24px clamp(22px,5vw,72px);display:flex}.portal .p-top-nav{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.portal .p-top-nav a{align-items:center;min-height:44px;font-size:13px;display:inline-flex}.portal .p-label{letter-spacing:.12em;text-transform:uppercase;color:var(--p-muted);margin-bottom:12px;font-size:12px;font-weight:650}.portal .p-muted{color:var(--p-muted);font-size:13px;line-height:1.65}.portal .p-btn{border:1px solid var(--p-line);background:var(--p-card);min-height:46px;color:var(--p-green);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.portal .p-btn:hover:not(:disabled){background:var(--p-sage)}.portal .p-btn.primary{background:var(--p-green);color:#fff;border-color:var(--p-green)}.portal .p-btn.primary:hover:not(:disabled){background:#243f33}.portal .p-btn.danger{color:var(--p-red);border-color:#dbbcb4}.portal .p-btn.ghost{background:0 0;border-color:#0000}.portal .p-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.portal .p-main{max-width:1450px;margin:auto;padding:38px clamp(22px,5vw,72px) 50px}.portal .p-intro{justify-content:space-between;align-items:flex-end;gap:25px;margin:0 0 30px;display:flex}.portal .p-intro p:not(.p-label){max-width:660px;color:var(--p-muted);margin-top:15px}.portal .p-grid{grid-template-columns:minmax(0,1.45fr) minmax(260px,1fr);gap:23px;display:grid}.portal .p-stack{align-content:start;gap:23px;display:grid}.portal .p-card{border:1px solid var(--p-line);background:var(--p-card);border-radius:16px;min-width:0;padding:27px;box-shadow:0 7px 24px #263d3405}.portal .p-card h2{margin-bottom:18px}.portal .p-card-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.portal .p-card-head h2{margin:0}.portal .p-badge{background:var(--p-sage);color:#3d5637;white-space:nowrap;border-radius:5px;align-items:center;padding:4px 8px;font-size:12px;display:inline-flex}.portal .p-badge.neutral{color:var(--p-muted);background:#eff0e9}.portal .p-badge.warn{color:#75591f;background:#f2ead9}.portal .p-badge.red{color:var(--p-red);background:#f7e7e1}.portal .p-notice{background:#eaf0e4;border:1px solid #c9d6c0;border-radius:10px;margin-bottom:22px;padding:17px 19px;font-size:13px;line-height:1.6}.portal .p-notice strong{margin-bottom:4px;display:block}.portal .p-notice.error{color:#843a31;background:#f8e9e4;border-color:#dfbcb2}.portal .p-notice.warn{background:#f3ecda;border-color:#ded2b7}.portal .p-notice .p-actions{margin-top:12px}.portal .p-row{border-top:1px solid var(--p-line);justify-content:space-between;align-items:center;gap:18px;padding:18px 0;display:flex}.portal .p-row:first-of-type{border-top:0}.portal .p-row:last-child{padding-bottom:0}.portal .p-row strong{font-size:14px;display:block}.portal .p-row .p-muted{margin-top:4px}.portal .p-field{gap:7px;margin-bottom:17px;display:grid}.portal .p-field label{font-size:13px;font-weight:600}.portal .p-field input,.portal .p-field textarea,.portal .p-field select{background:var(--p-card);color:var(--p-ink);border:1px solid #b6c2ad;border-radius:7px;width:100%;min-height:47px;padding:11px 12px;font-size:16px}.portal .p-field textarea{resize:vertical;min-height:100px}.portal .p-field small{color:var(--p-muted);font-size:12px}.portal .p-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.portal .p-auth-layout{grid-template-columns:1.05fr 1fr;min-height:calc(100dvh - 94px);display:grid}.portal .p-auth-story{color:#f7f5e9;background:#243f33;flex-direction:column;justify-content:center;padding:clamp(36px,6vw,90px);display:flex;position:relative;overflow:hidden}.portal .p-auth-story .p-label{color:#c6d3be}.portal .p-auth-story h1{max-width:530px;font-size:clamp(45px,4.7vw,70px);line-height:1.13}.portal .p-auth-story p:not(.p-label){color:#cbd8c4;max-width:390px;margin-top:24px;font-size:16px;line-height:1.8}.portal .p-staff{color:#d6dfc3;letter-spacing:15px;background:repeating-linear-gradient(#0000 0 16px,#ffffff2b 16px 17px);justify-content:space-around;align-items:center;height:94px;margin:50px -30px 22px;font:44px Georgia,serif;display:flex;position:relative;transform:rotate(-4deg)}.portal .p-auth-form{flex-direction:column;justify-content:center;width:100%;max-width:620px;margin:auto;padding:46px clamp(26px,5vw,76px);display:flex}.portal .p-auth-form h2{letter-spacing:-.9px;margin-bottom:12px;font-size:36px}.portal .p-auth-form>.p-muted{margin-bottom:25px}.portal .p-provider{background:var(--p-card);width:100%;margin-bottom:10px}.portal .p-provider-symbol{place-items:center;width:21px;font-size:18px;font-weight:650;display:inline-grid}.portal .p-divider{color:var(--p-muted);align-items:center;gap:13px;margin:15px 0 22px;font-size:12px;display:flex}.portal .p-divider:before,.portal .p-divider:after{content:"";background:var(--p-line);flex:1;height:1px}.portal .p-inline{justify-content:space-between;align-items:center;gap:15px;display:flex}.portal .p-link{color:var(--p-green);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;min-height:44px;padding:10px 0;font-size:13px;text-decoration:underline}.portal .p-full{width:100%}.portal .p-form-foot{border-top:1px solid var(--p-line);color:var(--p-muted);margin-top:22px;padding-top:19px;font-size:13px}.portal .p-stats-wrap{container:stats/inline-size}.portal .p-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:23px;display:grid}@container stats (width>=800px){.portal .p-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}.portal .p-stat{padding:20px}.portal .p-stat .p-label{margin-bottom:10px}.portal .p-number{letter-spacing:-1px;margin-bottom:7px;font:38px Georgia,serif}.portal .p-tabs{border-bottom:1px solid var(--p-line);gap:6px;margin:0 0 23px;display:flex;overflow-x:auto}.portal .p-tabs button{color:var(--p-muted);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;min-height:49px;padding:12px 17px;font-size:13px}.portal .p-tabs button[aria-current=page]{border-color:var(--p-green);color:var(--p-green);font-weight:650}.portal .p-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.portal .p-toolbar input{border:1px solid var(--p-line);background:var(--p-card);width:100%;max-width:350px;min-height:45px;color:var(--p-ink);border-radius:7px;padding:10px 12px}.portal .p-table-wrap{overflow:auto}.portal table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.portal th{color:var(--p-muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--p-line);padding:0 14px 13px 0;font-size:12px;font-weight:600}.portal td{border-bottom:1px solid var(--p-line);vertical-align:middle;overflow-wrap:anywhere;padding:17px 14px 17px 0}.portal tr:last-child td{border-bottom:0}.portal td strong{font-size:13px;display:block}.portal td small{color:var(--p-muted)}.portal .p-pagination{border-top:1px solid var(--p-line);justify-content:space-between;align-items:center;gap:15px;margin-top:14px;padding-top:18px;font-size:12px;display:flex}.portal .p-empty{text-align:center;padding:35px}.portal .p-empty h2{margin-bottom:15px}.portal .p-empty p{max-width:500px;color:var(--p-muted);margin:0 auto}.portal .p-loading{text-align:center;color:var(--p-muted);padding:40px}.portal .p-skeleton{background:#e7ebdf;border-radius:8px;height:20px;margin:16px 0}.portal .p-skeleton.large{height:120px}.portal .p-modal{border:1px solid var(--p-line);background:var(--p-card);width:calc(100% - 32px);max-width:570px;max-height:calc(100dvh - 32px);color:var(--p-ink);border-radius:18px;padding:28px;overflow:auto;box-shadow:0 25px 70px #17372735}.portal .p-modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#17372766}.portal .p-modal h2{margin:0 0 12px;font-size:29px}.portal .p-modal>.p-muted{margin-bottom:22px}.portal .p-modal-actions{border-top:1px solid var(--p-line);flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:18px;display:flex}.portal .p-key{overflow-wrap:anywhere;border:1px solid var(--p-line);-webkit-user-select:all;user-select:all;background:#edf0e5;border-radius:8px;margin:14px 0 18px;padding:15px;font:16px/1.7 ui-monospace,monospace}.portal .p-plan{border-bottom:1px solid var(--p-line);padding:20px 0}.portal .p-plan:last-child{border-bottom:0}.portal .p-plan h3{margin-bottom:8px}.portal .p-plan p{color:var(--p-muted);font-size:13px}.portal .p-foot{color:var(--p-muted);border-top:1px solid var(--p-line);justify-content:space-between;gap:20px;margin-top:30px;padding:25px clamp(22px,5vw,72px);font-size:12px;display:flex}.portal .p-secret-link{overflow-wrap:anywhere;word-break:break-all;border:1px solid var(--p-line);-webkit-user-select:all;user-select:all;background:#edf0e5;border-radius:8px;padding:14px;font-size:12px}.portal details summary{cursor:pointer;min-height:44px;color:var(--p-green);padding:10px 0;font-size:13px}@media (width<=1050px){.portal .p-grid{grid-template-columns:1fr}.portal .p-auth-story{padding:45px}.portal .p-auth-story h1{font-size:49px}.portal .p-auth-form{padding:35px}.portal .p-intro{flex-wrap:wrap;align-items:flex-start}}@media (width<=699px){.portal .p-top{flex-wrap:wrap;gap:12px;padding:17px 20px}.portal .p-brand{font-size:26px}.portal .p-top-nav{gap:10px}.portal .p-top-nav a{font-size:12px}.portal .p-main{padding:27px 20px 35px}.portal .p-auth-layout{flex-direction:column;min-height:0;display:flex}.portal .p-auth-story{padding:28px 25px}.portal .p-auth-story h1{letter-spacing:-1px;font-size:36px;line-height:1.2}.portal .p-auth-story p:not(.p-label){margin-top:13px;font-size:13px}.portal .p-auth-story .p-label{font-size:12px}.portal .p-staff{display:none}.portal .p-auth-form{padding:30px 24px}.portal .p-auth-form h2{font-size:30px}.portal .p-card{padding:21px}.portal .p-intro h1{font-size:38px}.portal .p-stats{gap:10px}.portal .p-stat{padding:17px}.portal .p-number{font-size:30px}.portal .p-stat .p-label{font-size:12px}.portal .p-fields{grid-template-columns:1fr;gap:0}.portal .p-row{flex-wrap:wrap;gap:12px}.portal .p-row>.p-actions,.portal .p-row>.p-btn{margin-left:auto}.portal .p-tabs button{padding-inline:12px}.portal .p-pagination{flex-wrap:wrap}.portal .p-modal{padding:24px 20px}.portal .p-modal-actions .p-btn{flex:1}.portal .p-foot{flex-wrap:wrap;font-size:12px}.portal .p-empty{padding:25px 5px}.portal .p-main .p-top-nav{width:100%}}@media (width<=899px){.portal .p-table-wrap table,.portal .p-table-wrap tbody{display:block}.portal .p-table-wrap thead{display:none}.portal .p-table-wrap tr{border-bottom:1px solid var(--p-line);grid-template-columns:1fr auto;gap:12px;padding:18px 0;display:grid}.portal .p-table-wrap tr:first-child{padding-top:0}.portal .p-table-wrap td{border:0;min-width:0;padding:0;display:block}.portal .p-table-wrap td:first-child{grid-column:1/-1}.portal td[data-label]:before{content:attr(data-label);color:var(--p-muted);margin-bottom:3px;font-size:12px;display:block}.portal .p-tabs{gap:2px}.portal .p-tabs button{padding-inline:12px}}@media (prefers-reduced-motion:reduce){.portal *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.portal{--brand-ink:#183c33;--brand-period:#a17542}.portal .p-loading-brand{margin-bottom:24px;font-size:30px}.portal{padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}.portal.p-railed{grid-template-rows:minmax(0,1fr);grid-template-columns:auto minmax(0,1fr);display:grid;overflow:hidden}.portal .p-rail,.portal .p-tabbar{--rail:#f0f1ed;--bg-elev:#fff;--line:#dcdfd8;--text:#263532;--text-dim:#67716b;--selected:#e0e6df;--selected-ink:#294c40;--selected-line:#cdd8cd;--hover:#e9eee6;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif;line-height:1.5}.portal .p-rail{height:100dvh}.portal .p-rail .brand{color:inherit}.portal .p-rail a.rail-item,.portal .p-tabbar a.rail-item{color:var(--text-dim);text-decoration:none}.portal .p-rail a.rail-item.active,.portal .p-tabbar a.rail-item.active{color:var(--selected-ink)}.portal.p-railed .p-page{flex-direction:column;min-width:0;min-height:0;display:flex;overflow-y:auto}.portal.p-railed .p-page>*{flex-shrink:0}.portal.p-railed .p-page>.p-foot{margin-top:auto}.portal.p-railed .p-main{width:100%;margin-block:0;padding-inline:clamp(22px,3.4vw,52px)}.portal.p-railed .p-foot{padding-inline:clamp(22px,3.4vw,52px)}@media (width<=699px){.portal.p-railed{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.portal .mobile-brand{color:inherit}}.portal .p-edit-row{border-top:1px solid var(--p-line);justify-content:space-between;align-items:center;gap:18px;padding:18px 0;display:flex}.portal .p-edit-row.p-open{display:block}.portal .p-edit-row:first-of-type{border-top:0}.portal .p-edit-row:last-child{padding-bottom:0}.portal .p-edit-row>.p-btn{flex:none}.portal .p-id{gap:2px;min-width:0;display:grid}.portal .p-id-label{letter-spacing:.12em;text-transform:uppercase;color:var(--p-muted);font-size:12px;font-weight:650}.portal .p-id-value{overflow-wrap:anywhere;font-size:16px;font-weight:500}.portal .p-id-value.p-dots{letter-spacing:.12em;color:var(--p-muted)}.portal .p-id-note,.portal .p-id-help{margin-top:4px}.portal .p-check{align-items:flex-start;gap:10px;margin:0 0 17px;font-size:13px;line-height:1.55;display:flex}.portal .p-check input{width:18px;height:18px;accent-color:var(--p-green);flex:none;margin-top:3px}.portal small{font-size:12px}.portal .p-subhead{letter-spacing:.12em;text-transform:uppercase;color:var(--p-muted);margin:26px 0 4px;font:650 12px/1.2 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.portal .p-field input[aria-invalid=true]{border-color:var(--p-red)}.portal .p-link-inline{align-items:center;min-height:44px;margin-top:2px;font-size:13px;display:inline-flex}.portal .p-card-foot{margin-top:18px}.portal .p-access{padding:2px 0 22px}.portal .p-access-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.portal .p-access-head strong{font-size:14px}@media (width<=560px){.portal .p-edit-row:not(.p-open){align-items:flex-start}.portal .p-modal-actions .p-btn{white-space:nowrap;flex:auto}}.portal .p-legal-consent{margin:4px 0 18px}.portal .p-legal-consent .p-check{margin-bottom:8px;font-size:14px;font-weight:600}.portal .p-legal-notice{color:var(--p-muted);margin:0 0 8px 35px;font-size:12px;line-height:1.65}.portal .p-legal-links{flex-wrap:wrap;gap:4px 18px;margin:0 0 0 35px;font-size:12px;display:flex}.portal .p-legal-links a{min-height:44px;color:var(--p-green);text-underline-offset:3px;align-items:center;display:inline-flex}.portal .p-legal-gate{max-width:640px;margin:0 auto}.portal .p-legal-gate h1{margin-bottom:14px;font-size:clamp(32px,4vw,44px)}.portal .p-legal-lede{color:var(--p-muted);margin:0 0 22px;font-size:15px;line-height:1.7}.portal .p-legal-gate .p-actions{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.portal .p-auth-legal{color:var(--p-muted);text-align:center;margin:14px 0 0;font-size:12px;line-height:1.7}.portal .p-auth-legal a{color:var(--p-green);text-underline-offset:3px}.portal .p-auth-captcha{color:var(--p-muted);text-align:center;margin:10px 0 0;font-size:12px;line-height:1.7}.portal .p-auth-captcha a{color:var(--p-green);text-underline-offset:3px;white-space:nowrap}.grecaptcha-badge{visibility:hidden}.portal .p-foot-links{flex-wrap:wrap;gap:0 18px;display:inline-flex}.portal .p-foot-links a{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.portal .p-legal-card-links{margin:12px 0 16px}.portal .p-legal-links .p-ext{margin-left:5px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f5f2;--bg-elev:#fff;--bg-elev2:#eeefeb;--line:#dcdfd8;--text:#263532;--text-dim:#67716b;--accent:#345d51;--accent-warm:#96703a;--love:#ad4848;--like:#39725b;--okay:#67716b;--paper:#fffefb;--accent-fill:#345d51;--accent-warm-fill:#896536;--like-fill:#39725b;--love-fill:#ad4848;--card:#fffefb;--rail:#f0f1ed;--selected:#e0e6df;--selected-ink:#294c40;--selected-line:#cdd8cd;--footer:#fafbf8;--score-surround:#e9ece6;--hover:#e9eee6;--hover-line:#a3b2a2;--switch-track:#c5cbc2;--footer-h:76px;--header-h:100px;--radius:16px;--serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--bar-h:72px;--peek-h:16px;--panel-top:max(44px, 12dvh);--ease:cubic-bezier(.2,.8,.2,1);--ease-in:cubic-bezier(.4,0,1,1);--scrim:#19251f2e;--shadow-float:0 10px 34px #17271f21;--shadow-panel:0 -16px 50px #17271f1c;--rec-dot:#f0aaa1;--handle:color-mix(in srgb, var(--text-dim) 42%, transparent);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#171e1b;--bg-elev:#202a25;--bg-elev2:#2a352e;--line:#3e4b42;--text:#e6e8de;--text-dim:#abb7aa;--accent:#a7cbb8;--accent-warm:#d9b47e;--like:#8fc6a8;--love:#e9a098;--okay:#abb7aa;--accent-fill:#3a6c57;--card:#202a25;--rail:#1c241f;--selected:#304137;--selected-ink:#d4e8d8;--selected-line:#506551;--footer:#1b231e;--score-surround:#121915;--hover:#314136;--hover-line:#6b826e;--switch-track:#536155;--warn:#d9b47e;--scrim:#0006;--shadow-float:0 10px 34px #00000073;--shadow-panel:0 -16px 50px #0000006b;--rec-dot:#f4b8b0}@media (width>=700px) and (width<=999px){:root{--panel-top:24dvh}}@media (width<=699px){:root{--bar-h:128px;--peek-h:14px;--panel-top:40px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none;-webkit-user-select:none;user-select:none}button{font:inherit;cursor:pointer}button:disabled{cursor:default}.app{flex-direction:column;max-width:100vw;height:100%;display:flex;overflow-x:hidden}.shell{flex:auto;min-height:0;display:flex}.pane{flex-direction:column;flex:auto;min-width:0;display:flex;position:relative}.screen{flex-direction:column;flex:auto;min-height:0;display:flex}.screen.hidden{display:none}.nav-rail{border-right:1px solid var(--line);background:var(--bg-elev);flex-direction:column;flex:none;gap:4px;width:84px;padding:10px 6px;display:flex;overflow-y:auto}.rail-item{min-height:60px;color:var(--text-dim);background:0 0;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:8px 2px;display:flex}a.rail-item{text-decoration:none}.rail-item:active{background:var(--bg-elev2)}.rail-item.active{background:var(--bg-elev2);color:var(--accent)}.rail-icon{font-size:22px;line-height:1}.tab-bar{border-top:1px solid var(--line);background:var(--bg-elev);padding-bottom:env(safe-area-inset-bottom);flex:none;display:none}.tab-bar .rail-item{flex:1 1 0;min-height:56px}@media (width<=699px){.nav-rail{display:none}.tab-bar{display:flex}}.header{height:var(--header-h);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:0 16px;display:flex}.header h1{letter-spacing:.2px;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;margin:0;font-size:17px;font-weight:650;overflow:hidden}.header-meta{min-width:0;color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;overflow:hidden}.header .back{background:var(--bg-elev2);border:1px solid var(--line);color:var(--text);border-radius:10px;min-height:44px;padding:6px 12px;font-size:14px}.header-btn{background:var(--bg-elev2);border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line));min-height:44px;color:var(--accent);border-radius:10px;flex:none;padding:6px 10px;font-size:13px;font-weight:600}.header-btn.active{background:var(--accent-fill);color:#fff;border-color:var(--accent-fill)}.zoom-ctl{flex:none;align-items:center;gap:4px;display:inline-flex}.zoom-ctl .header-btn{min-width:40px;padding:6px 8px;font-size:16px;line-height:1}.zoom-val{text-align:center;min-width:42px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:12px}.content{-webkit-overflow-scrolling:touch;flex:auto;padding:16px;overflow-y:auto}.content:not(.reader-content){width:100%;max-width:940px;margin-inline:auto}.reader-content{flex-direction:column;max-width:none;padding:8px;display:flex;overflow:hidden}.footer-bar{border-top:1px solid var(--line);background:var(--bg-elev);flex-flow:wrap;flex:none;align-items:center;display:flex}.footer-slot{flex:380px;min-width:0;display:flex}.footer-slot:empty{display:none}.footer-bar:not(:has(.metronome)) .footer-slot{flex:100%}.footer-bar:has(.footer-slot:empty) .metronome{max-width:560px;margin-inline:auto}.metronome{min-width:0;height:var(--footer-h);flex:300px;align-items:center;gap:10px;padding:0 14px;display:flex}.metronome .play{background:var(--accent-fill);color:#fff;border:none;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:18px;transition:transform 80ms,background .15s;display:grid}.metronome .play:active{transform:scale(.92)}.metronome .bpm-step{border:1px solid var(--line);background:var(--bg-elev2);width:44px;height:44px;color:var(--text);border-radius:10px;flex:none;font-size:22px;line-height:1}.metronome .bpm-step:active{background:var(--line)}.metronome .readout{text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;line-height:1;display:flex}.metronome .readout .num{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.metronome .readout .lbl{color:var(--text-dim);letter-spacing:1.5px;font-size:12px}.metronome .pulse{background:var(--line);border-radius:50%;flex:none;width:10px;height:10px;transition:background 50ms,transform 50ms}.metronome .pulse.on{background:var(--accent-warm);transform:scale(1.5)}.metronome .pulse.downbeat.on{background:var(--love)}.seg{border:1px solid var(--line);border-radius:12px;flex:none;display:inline-flex;overflow:hidden}.seg>button{background:var(--bg-elev2);min-width:48px;min-height:44px;color:var(--text-dim);border:none;padding:0 10px;font-size:12.5px;font-weight:600}.seg>button+button{border-left:1px solid var(--line)}.seg>button.on{background:var(--accent-fill);color:#fff;font-weight:700}.chip{border:1px solid var(--line);background:var(--bg-elev);color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;min-height:44px;padding:7px 13px;font-size:13px;display:inline-flex}.chip.active{background:var(--accent-fill);color:#fff;border-color:var(--accent-fill);font-weight:600}.chip:disabled{opacity:.32}.chip .chip-sub{opacity:.75;font-size:12px;font-weight:500}.chip-row{flex-wrap:wrap;gap:7px;display:flex}.facet-label{letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim);margin:0 0 6px;font-size:12px;font-weight:650}.facet-group{margin-bottom:12px}.generate-btn{border:1px solid var(--accent-fill);background:linear-gradient(180deg, var(--accent-fill), color-mix(in srgb, var(--accent-fill) 82%, #000));color:#fff;cursor:pointer;border-radius:12px;min-height:48px;padding:12px 18px;font-size:15px;font-weight:700}.generate-btn:disabled{opacity:.6;cursor:progress}.generate-btn.secondary{background:var(--bg-elev2);color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.gen-go{align-self:stretch;width:100%}.gen-practice{justify-content:center;align-items:center;gap:8px;display:inline-flex}.hero{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:22px;padding:20px 18px}.hero h2{margin:0 0 4px;font-size:21px}.hero .sub{color:var(--text-dim);margin:0 0 16px;font-size:14px}.hero-actions{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.hero-actions .generate-btn{flex:2 220px;padding:14px 18px;font-size:17px}.hero-actions .generate-btn.secondary{flex:150px}.band-strip{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.band-strip .strip-lbl{flex-basis:100%}.shelf{margin-bottom:26px}.shelf-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.shelf-title{margin:0;font-size:18px;font-weight:700}.shelf-sub{color:var(--text-dim);margin:2px 0 0;font-size:13px}.shelf-seeall{color:var(--accent);background:0 0;border:none;flex:none;padding:6px 4px;font-size:13px;font-weight:600}.shelf-rail{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;grid-auto-columns:200px;grid-auto-flow:column;gap:12px;padding-bottom:6px;display:grid;overflow-x:auto}.shelf-card{scroll-snap-align:start;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);text-align:left;color:var(--text);flex-direction:column;min-height:104px;padding:13px;display:flex}.shelf-card:active{background:var(--bg-elev2)}.shelf-empty{color:var(--text-dim);background:var(--bg-elev);border:1px dashed var(--line);border-radius:var(--radius);padding:18px 16px;font-size:13.5px}.piece-grid-wrap{container:pieces/inline-size}.piece-grid{grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:8px;display:grid}@container pieces (width>=640px){.piece-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.grid-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);text-align:left;min-height:48px;color:var(--text);padding:14px;display:block;position:relative}.grid-card:active{background:var(--bg-elev2)}.gc-title,.sc-title{align-items:flex-start;gap:6px;font-size:15.5px;font-weight:650;line-height:1.25;display:flex}.sc-title{font-size:14.5px}.gc-title .star-btn,.sc-title .star-btn{margin-left:auto}.gc-meta,.sc-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;display:flex}.sc-meta{margin-top:auto;padding-top:10px}.gc-foot{color:var(--text-dim);align-items:center;gap:8px;margin-top:10px;font-size:12px;display:flex}.gc-more{min-width:44px;min-height:32px;color:var(--text-dim);letter-spacing:1px;background:0 0;border:none;border-radius:8px;margin-left:auto;font-size:18px}.gc-more:active{background:var(--bg-elev2)}.tag{color:var(--text-dim);background:var(--bg-elev2);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:12px}.tag.accent{color:var(--accent-warm);border-color:color-mix(in srgb, var(--accent-warm) 40%, var(--line))}.tag.demand{color:var(--accent-warm)}.band-pips{align-items:center;gap:6px;display:inline-flex}.band-pips .pips{gap:2px;display:inline-flex}.band-pips .pips i{background:var(--line);border-radius:1px;width:3px;height:11px}.band-pips[data-level=low] .pips i.on{background:var(--like)}.band-pips[data-level=mid] .pips i.on{background:var(--accent)}.band-pips[data-level=high] .pips i.on{background:var(--accent-warm)}.band-pips b{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}button.band-pips{font:inherit;color:inherit;line-height:inherit;background:0 0;border:none;margin:0}.band-pips.interactive{cursor:pointer;border-radius:6px;padding:2px 5px;transition:background .15s,transform .1s}.band-pips.interactive:hover{background:color-mix(in srgb, var(--accent) 15%, transparent);transform:translateY(-1px)}.header-level-btn{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);cursor:pointer;vertical-align:middle;border-radius:6px;align-items:center;gap:4px;padding:2px 7px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.header-level-btn:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);border-color:var(--accent);transform:translateY(-1px)}.facet-head-row{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.facet-head-row .facet-label{margin:0}.facet-guide-btn{border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);color:var(--accent);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.facet-guide-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent);border-color:var(--accent)}button.diff-grade-interactive{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:4px 10px;transition:background .15s,border-color .15s,transform .1s}button.diff-grade-interactive .diff-grade-lbl{align-items:center;gap:4px;display:inline-flex}button.diff-grade-interactive:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);border-color:color-mix(in srgb, var(--accent) 30%, transparent);transform:translateY(-1px)}.level-big-btn{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;margin:-2px -6px;padding:2px 6px;font-size:26px;font-weight:800;transition:background .15s,color .15s;display:inline-flex}.level-big-btn:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent)}.level-big-btn .guide-tag{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:6px;align-items:center;gap:4px;padding:2px 7px;font-size:12px;font-weight:600;display:inline-flex}.star-btn{cursor:pointer;color:var(--text-dim);background:0 0;border:none;flex:none;min-width:44px;min-height:32px;margin:-4px 0 -4px auto;padding:4px 6px;font-size:17px;line-height:1}.star-btn.on{color:var(--accent-warm)}.star-btn.large{min-height:44px;padding:6px 8px;font-size:26px}.jazz-search{background:var(--bg-elev);width:100%;color:var(--text);border:1px solid var(--line);font:inherit;border-radius:12px;min-height:44px;margin-bottom:12px;padding:11px 14px;font-size:15px}.jazz-search::placeholder{color:var(--text-dim)}.jazz-search:focus{border-color:var(--accent);outline:none}.result-count{margin:0 0 10px;font-size:13px}.sheet-backdrop{z-index:50;background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-backdrop.clear{background:#0000001f}.sheet{background:var(--bg-elev);border:1px solid var(--line);--sheet-x:18px;--sheet-t:18px;--sheet-end:calc(18px + env(safe-area-inset-bottom));width:100%;max-width:820px;max-height:92dvh;padding:var(--sheet-t) var(--sheet-x) var(--sheet-end);border-radius:18px 18px 0 0;overflow-y:auto}.sheet-backdrop.centered{align-items:center;padding:16px}.sheet-backdrop.centered .sheet{--sheet-end:18px;border-radius:18px;max-width:640px;max-height:min(92dvh,760px);box-shadow:0 24px 60px #00000047}.sheet h3{margin:0 0 4px;font-size:16px}.sheet .sub{color:var(--text-dim);margin:0 0 14px;font-size:13px}.sheet .sub.blocked{border:1px solid color-mix(in srgb, var(--accent-warm) 45%, var(--line));background:color-mix(in srgb, var(--accent-warm) 8%, transparent);color:var(--text);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 8px;padding:9px 12px;display:flex}.sheet .sub.blocked .retry{flex:none}.option-grid{gap:8px;display:grid}.option{text-align:left;border:1px solid var(--line);background:var(--bg-elev2);color:var(--text);border-radius:12px;min-height:48px;padding:13px 14px;font-size:15px}.option.selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, var(--bg-elev2))}.option small{color:var(--text-dim);margin-top:2px;font-size:12px;display:block}.option.danger{color:var(--love)}.option .with-icon{align-items:center;gap:8px;display:inline-flex}.option .opt-dot{background:var(--line);border-radius:50%;width:9px;height:9px;margin-right:8px;display:inline-block}.option .opt-dot.love{background:var(--love)}.option .opt-dot.like{background:var(--like)}.option .opt-dot.okay{background:var(--okay)}.option .opt-dot.warm{background:var(--accent-warm)}.sheet .clear{color:var(--text-dim);background:0 0;border:none;width:100%;min-height:44px;margin-top:12px;padding:8px}.sheet:has(>.sheet-actions){padding-bottom:0}.sheet-actions{z-index:2;margin:12px calc(-1 * var(--sheet-x)) 0;padding:12px var(--sheet-x) var(--sheet-end);background:var(--bg-elev);border-top:1px solid var(--line);position:sticky;bottom:0}.sheet-actions>:last-child{margin-bottom:0}.gen-busy{text-align:center;padding:36px 0}.gen-busy .spinner{margin-bottom:8px}.gen-result-head{justify-content:space-between;align-items:center;gap:10px;padding-right:48px;display:flex}.gen-result-head h3{margin:0}.sheet .gen-result-head h3{padding-right:0}.gen-radar{justify-content:center;margin:8px 0 4px;display:flex}.gen-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gen-actions .generate-btn{flex:1}.gen-hint{margin-top:10px}.more-toggle{width:100%;color:var(--text-dim);text-align:left;background:0 0;border:none;align-items:center;gap:8px;min-height:44px;padding:10px 0;font-size:13px;font-weight:600;display:flex}.more-toggle .chev{transition:transform .2s;display:inline-block}.more-toggle .chev.open{transform:rotate(90deg)}.tempo-slider{align-items:center;gap:12px;margin-top:8px;display:flex}.tempo-slider input[type=range]{accent-color:var(--accent);flex:auto;min-height:44px}.tempo-slider .tempo-val{text-align:right;font-variant-numeric:tabular-nums;min-width:60px;font-size:16px;font-weight:700}.tempo-slider .tempo-val small{color:var(--text-dim);font-size:12px;font-weight:500}.reject-list{color:var(--text-dim);text-align:left;margin:8px 0 0;padding-left:18px;font-size:13px}.radar{max-width:100%;height:auto;display:block}.radar-ring{fill:none;stroke:var(--line);stroke-width:1px;opacity:.6}.radar-spoke{stroke:var(--line);stroke-width:1px;opacity:.4}.radar-label{fill:var(--text-dim);font-size:9px;font-weight:600}.radar-values{fill:color-mix(in srgb, var(--accent) 28%, transparent);stroke:var(--accent);stroke-width:1.5px}.radar-overlay{fill:color-mix(in srgb, var(--like) 12%, transparent);stroke:var(--like);stroke-width:1.5px;stroke-dasharray:3 2}.radar-swatch.values{fill:var(--accent)}.radar-swatch.overlay{fill:var(--like)}.radar-legend-text{fill:var(--text-dim);font-size:10px}.diff-drawer{z-index:20;background:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.diff-drawer-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:360px;max-height:100%;padding:18px;overflow-y:auto;box-shadow:0 12px 40px #00000080}.diff-panel{flex-direction:column;align-items:center;gap:12px;display:flex}.diff-head{align-items:flex-end;gap:24px;display:flex}.diff-grade,.diff-peak{flex-direction:column;align-items:center;line-height:1.1;display:flex}.diff-grade-num{color:var(--accent);font-variant-numeric:tabular-nums;font-size:30px;font-weight:700}.diff-grade-lbl,.diff-peak-lbl{color:var(--text-dim);margin-top:2px;font-size:12px}.diff-peak-num{color:var(--accent-warm);font-variant-numeric:tabular-nums;font-size:30px;font-weight:700}.diff-demands{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.diff-demands-lbl{color:var(--text-dim);font-size:12px}.diff-warnings{color:var(--text-dim);align-self:stretch;margin:0;padding-left:18px;font-size:12.5px}.reader-pager{touch-action:pan-y;flex:auto;min-height:0;position:relative;overflow:hidden}:is(.reader-pager.fs,.reader-pager:fullscreen){z-index:1000;background:var(--paper);position:fixed;inset:0}:is(.reader-pager.fs .pager-page,.reader-pager:fullscreen .pager-page){padding:0}:is(.reader-pager.fs .pager-page .paper,.reader-pager:fullscreen .pager-page .paper){box-shadow:none;border-radius:0}body.score-fullscreen .footer-bar,body.score-fullscreen .tab-bar{display:none}.app.reader-view{height:100dvh;position:fixed;inset:0;overflow:clip}.app.reader-view .shell{flex:1 1 0;min-width:0}.app.reader-view .pane,.app.reader-view .screen,.app.reader-view .reader-content{min-width:0;min-height:0}.app.reader-view .nav-rail,.app.reader-view .tab-bar{display:none}.app.reader-view .reader-header{z-index:40;visibility:hidden;transition:transform .18s var(--ease-in), visibility 0s linear .18s;position:fixed;top:0;left:0;right:0;transform:translateY(calc(-100% - 16px))}.app.reader-view .reader-header.visible{visibility:visible;box-shadow:var(--shadow-float);transition:transform .24s var(--ease), visibility 0s;transform:translateY(0)}.reader-peek{z-index:6;background:0 0;border:0;align-content:start;justify-items:center;width:88px;height:44px;padding:0;display:grid;position:absolute;top:0;left:50%;transform:translate(-50%)}.reader-peek:before{content:"";width:40px;height:4px;margin-top:calc((var(--peek-h) - 4px) / 2);background:var(--handle);border-radius:2px}.app.reader-view .reader-content{padding:var(--peek-h) 16px 12px;position:relative}@media (width<=699px){.app.reader-view .reader-content{padding:var(--peek-h) 8px 8px}}.app.reader-view .footer-bar{height:calc(var(--bar-h) + env(safe-area-inset-bottom));padding:0 0 env(safe-area-inset-bottom);background:var(--footer);border-top:1px solid var(--line);flex-wrap:nowrap}.app.reader-view .footer-bar:has(.transport[data-panel=open]){border-top-color:#0000}.app.reader-view .footer-slot{flex:100%;align-self:stretch}.fs-controls{z-index:1001;background:#111418;border:1px solid #2a2f37;border-radius:14px;align-items:center;gap:8px;padding:8px 10px;display:flex;position:absolute;top:12px;right:14px;box-shadow:0 6px 22px #00000059}.fs-btn{color:#e8edf2;cursor:pointer;background:#1d222b;border:1px solid #3a414c;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-width:44px;height:44px;padding:0;font-size:18px;line-height:1;display:inline-flex}.fs-btn:active{background:#2a313c}.fs-btn.fs-exit{background:var(--accent-fill);color:#fff;border-color:var(--accent-fill);width:auto;padding:0 16px;font-size:15px;font-weight:700}.fs-bpm{text-align:center;color:#e8edf2;font-variant-numeric:tabular-nums;min-width:46px;font-size:17px;font-weight:700}.fs-bpm small{color:#c6cec3;font-size:12px;font-weight:500;display:block}.pager{position:absolute;inset:0}.pager-track{will-change:transform;width:100%;height:100%;position:relative}.pager-track.animate{transition:transform .46s cubic-bezier(.22,.68,.32,1)}.pager-page{width:100%;height:100%;padding:0 6px;display:flex;position:absolute;top:0}.pager-page .paper{background:var(--paper);border-radius:10px;flex:auto;justify-content:center;align-items:flex-start;min-width:0;padding:12px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 30px #00000080}.page-clip{width:100%;height:100%;position:relative;overflow:hidden}.page-clip>*{will-change:transform}.pager-count{color:#e8edf2;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#111418b3;border-radius:999px;height:23px;padding:3px 10px;font-size:12px;line-height:17px;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.turn-flash{border-radius:inherit;box-shadow:inset 0 0 0 4px var(--accent-fill);pointer-events:none;animation:1.3s ease-out forwards turn-flash;position:absolute;inset:0}@keyframes turn-flash{0%,45%{opacity:1}to{opacity:0}}.pager-count.turned{animation:turn-count 1.5s var(--ease) both}.pager-count.edge{border-radius:6px 6px 0 0;height:12px;padding:0 9px;line-height:12px;bottom:0}.pager-count.edge.turned{animation-name:turn-count-flat}@keyframes turn-count-flat{0%,55%{background:var(--accent-fill);color:#fff;font-weight:700}}@keyframes turn-count{0%,55%{background:var(--accent-fill);color:#fff;padding-inline:22px;font-weight:700}}@media (prefers-reduced-motion:reduce){@keyframes turn-count{0%,55%{background:var(--accent-fill);color:#fff;font-weight:700}}}.pager-edge{pointer-events:none;color:#e8edf2;opacity:0;justify-content:center;align-items:center;width:62px;height:44px;font-size:30px;line-height:1;transition:opacity .4s;display:flex;position:absolute}.pager-edge span{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1114188c;border-radius:50%;place-items:center;width:44px;height:44px;padding-bottom:3px;display:grid}.pager-edge.left{left:0}.pager-edge.right{right:0}.pager-edge.hint{opacity:.6}.pager-edge.hide{opacity:0!important}.pager-overlay{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.settings-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:16px 18px}.settings-card h2{margin:0 0 10px;font-size:16px}.settings-card p{font-size:13.5px}.setting-row{align-items:center;gap:12px;margin:10px 0;display:flex}.setting-row label{color:var(--text-dim);flex:0 0 150px;font-size:13.5px}.setting-row input[type=range]{accent-color:var(--accent);flex:auto;min-height:44px}.setting-val{text-align:right;font-variant-numeric:tabular-nums;min-width:48px;font-size:14px;font-weight:600}.settings-btn{background:var(--bg-elev2);min-height:44px;color:var(--text);border:1px solid var(--line);border-radius:11px;justify-content:center;align-items:center;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.settings-btn:active{background:var(--line)}.setting-toggle-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:10px 0;display:flex}.setting-toggle-row:first-of-type{border-top:none}.toggle-info{flex-direction:column;flex:auto;gap:2px;display:flex}.toggle-label{color:var(--text);cursor:pointer;font-size:14px;font-weight:600}.toggle-desc{color:var(--text-dim);font-size:12.5px;line-height:1.35}.toggle-checkbox{width:22px;height:22px;accent-color:var(--accent);cursor:pointer;flex:none}.curtain-overlay{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.curtain-veil{background:color-mix(in srgb, var(--paper,#fff) 86%, transparent);-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);border-right:2px solid var(--accent-warm,#d97706);box-sizing:border-box;opacity:.95;transition:opacity .15s ease-out;position:absolute}.muted{color:var(--text-dim)}.center{text-align:center;padding:40px 0}.spinner{color:var(--text-dim);text-align:center;padding:32px}.num{font-variant-numeric:tabular-nums}.meta-error{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--love) 12%, var(--bg-elev));color:var(--text);align-items:center;gap:10px;margin:0;padding:10px 16px;font-size:13.5px;display:flex}.meta-error button{background:var(--bg-elev2);color:var(--accent);border:1px solid var(--line);border-radius:8px;min-height:36px;padding:6px 12px;font-size:13px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}html[data-input=pointer] :is(button,a,summary,[role=button]):focus-visible{outline:none}body{font-size:16px;line-height:1.5}button,a,input,select,summary{touch-action:manipulation}button,input,select{font:inherit}button:disabled{opacity:.5}a{color:var(--accent)}svg{flex-shrink:0}button,a,input,select{transition:background-color .16s,border-color .16s,color .16s}.app{height:100dvh;padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}.nav-rail{background:var(--rail);gap:0;width:216px;padding:33px 20px 20px}.brand{align-items:center;min-height:44px;margin:0 8px 32px;font-size:23px;text-decoration:none;display:flex}.nav-caption{letter-spacing:.15em;color:var(--text-dim);margin:0 12px 17px;font-size:12px}.rail-links{flex-direction:column;gap:7px;display:flex}.rail-item{border:1px solid #0000;border-radius:10px;flex-direction:row;justify-content:flex-start;gap:15px;min-height:52px;padding:12px 16px}.rail-icon{display:flex}.rail-label{letter-spacing:0;font-size:15px;font-weight:500}.rail-item.active{background:var(--selected);color:var(--selected-ink);border-color:var(--selected-line)}.rail-item.active .rail-label{font-weight:650}.rail-links>.rail-item.rail-gap{margin-top:23px}.rail-signoff{margin:auto 12px 0;padding-top:40px}.rail-signoff>span{font:italic 17px var(--serif)}.rail-signoff small{color:var(--text-dim);margin-top:8px;font-size:12px;line-height:1.6;display:block}.mobile-brand{display:none}.header{min-height:var(--header-h);border-bottom:0;height:auto;padding:20px 38px}.header h1{font:36px/1.2 var(--serif);letter-spacing:-1px;margin-bottom:-.1em;padding-bottom:.1em}.header-meta{font-size:14px}.content{padding:8px 38px 32px}.content:not(.reader-content){max-width:1240px}.footer-bar{padding:8px 24px max(8px,env(safe-area-inset-bottom));background:var(--footer)}.footer-bar:has(.footer-slot:empty) .metronome{max-width:500px}.metronome{gap:12px;height:54px;padding:0}.metronome .play{color:#fff;background:var(--accent-fill);width:48px;height:48px}.metronome .play.running{background:var(--accent-warm-fill)}.metronome .bpm-step{background:0 0;min-width:44px;height:44px}.metronome .readout{flex:none;min-width:65px}.metronome .readout .num{font-size:23px;font-weight:600}.metronome .readout .lbl{letter-spacing:.08em;font-size:12px}.metro-label{color:var(--text-dim);align-items:center;gap:10px;margin-right:auto;font-size:14px;display:flex}.chip{border-radius:9px;min-height:46px;font-size:14px}.chip.active,.header-btn.active{background:var(--accent-fill);color:#fff;border-color:var(--accent-fill)}.header-btn,.header .back{background:var(--bg-elev);font-size:14px}.jazz-search{background:var(--bg-elev);font-size:16px}.sheet-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#19251f52}.sheet-backdrop.clear{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}.sheet{border:1px solid var(--line);box-shadow:0 24px 100px #17271f2e}.sheet h3{font:30px/1.2 var(--serif);letter-spacing:-.4px}.sheet .sub,.option small{font-size:14px}.option{min-height:56px;font-size:16px}.reader-view .nav-rail{width:86px;padding:22px 8px}.reader-view .brand{justify-content:center;margin:0 0 22px;font-size:32px}.reader-view .nav-caption,.reader-view .rail-signoff{display:none}.reader-view .rail-item{flex-direction:column;justify-content:center;gap:5px;min-height:64px;padding:10px 2px}.reader-view .rail-label{font-size:12px}.reader-content{background:var(--score-surround);padding:6px 16px 16px}.pager-page .paper{border-radius:4px;box-shadow:0 3px 12px #1d281d1a}.zoom-ctl .header-btn{min-width:44px}.zoom-val{font-size:14px}.settings-card{margin-bottom:20px;padding:24px}.settings-card h2{font:24px var(--serif);margin-bottom:20px}.settings-card p,.setting-row label,.toggle-label,.toggle-desc{font-size:14px;line-height:1.6}.setting-toggle-row{min-height:64px;padding:20px 0}.toggle-checkbox{appearance:none;background:var(--switch-track);border:2px solid var(--switch-track);box-sizing:content-box;border-radius:20px;width:48px;height:28px;margin:8px 0;position:relative}.toggle-checkbox:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .16s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0002}.toggle-checkbox:checked{border-color:var(--accent-fill);background:var(--accent-fill)}.toggle-checkbox:checked:after{transform:translate(20px)}.setting-row input[type=range]{cursor:pointer;max-width:520px}.meta-error{flex-wrap:wrap;font-size:14px}.meta-error button{min-height:44px}.star-btn{border-radius:8px;justify-content:center;align-items:center;min-height:44px;display:inline-flex}.star-btn.on svg{fill:color-mix(in srgb,var(--accent-warm) 18%,transparent)}.sheet{--sheet-x:30px;--sheet-t:30px;--sheet-end:30px;max-height:90dvh;position:relative}.sheet h3{padding-right:48px}.sheet-close{border:1px solid var(--line);background:var(--bg-elev);width:44px;height:44px;color:var(--text);z-index:1;border-radius:50%;place-items:center;display:grid;position:absolute;top:18px;right:18px}.reader-tools h4{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin:24px 0 12px;font-size:13px;font-weight:500}.reader-tool-row{flex-wrap:wrap;gap:10px;display:flex}@media (width>=700px){.sheet-backdrop{align-items:center;padding:24px}.sheet{border-radius:20px}}@media (width<=699px){.sheet{--sheet-x:20px;--sheet-t:25px;--sheet-end:25px}}.piece-grid{gap:14px}@container pieces (width>=720px){.piece-grid{gap:20px}}.grid-card{background:var(--card);border-radius:12px;min-width:0;padding:24px 24px 14px}.gc-caption{color:var(--accent-warm);letter-spacing:.04em;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;font-size:12px;display:flex}.gc-caption span{color:var(--text-dim);white-space:nowrap;font-size:12px}.gc-title{font:25px/1.3 var(--serif);letter-spacing:-.3px;gap:10px}.gc-title>span{padding-top:5px}.gc-meta{gap:8px;margin-top:15px}.gc-meta .tag{background:0 0;border:0;padding:0;font-size:14px}.gc-meta .tag+.tag:before{content:"·";color:var(--text-dim);padding-right:8px}.gc-meta .band-pips{margin-left:auto}.gc-foot{border-top:1px solid var(--line);margin-top:23px;padding-top:9px;font-size:13px}.gc-more{min-height:44px}.gc-result{text-align:left;width:100%;color:var(--text);background:var(--bg-elev2);border:1px solid var(--line);font:inherit;cursor:pointer;border-radius:10px;align-items:center;gap:12px;min-height:48px;margin-top:18px;padding:9px 12px;display:flex}.gc-result:hover{border-color:var(--hover-line);background:color-mix(in srgb, var(--accent) 8%, var(--bg-elev2))}.gc-score{text-align:right;width:3ch;font:24px/1 var(--serif);font-variant-numeric:tabular-nums;color:var(--accent);flex:none}.gc-score.unscored{color:var(--text-dim)}.gc-grade{min-width:0;font-size:13px;font-weight:550}.gc-see{color:var(--accent);flex:none;align-items:center;gap:2px;margin-left:auto;font-size:13px;font-weight:600;display:inline-flex}.band-pips.interactive{min-width:44px;min-height:44px}.band-pips b{font-size:12px}.generate-btn{background:var(--accent-fill);color:#fff;min-height:52px;font-weight:600}.generate-btn.secondary{color:var(--accent)}.seg>button{font-size:14px}.seg>button.on{color:#fff}.facet-label{letter-spacing:.08em;margin-bottom:10px;font-size:12px}.facet-guide-btn,.header-level-btn{min-height:44px;font-size:14px}.sheet .chip-row{gap:8px}.sheet .facet-group{margin-bottom:22px}.sheet .more-toggle{font-size:15px}@media (hover:hover){.grid-card:hover{border-color:var(--hover-line);box-shadow:0 5px 16px #213b2908}}@container pieces (width<=719px){.grid-card{padding:20px 18px 12px}.gc-title{font-size:23px}}@media (hover:hover){.rail-item:hover{background:var(--hover)}.chip:hover:not(:disabled):not(.active),.header-btn:hover,.settings-btn:hover{border-color:var(--hover-line);background:var(--hover)}}@media (width>=700px) and (width<=1080px){.nav-rail{width:168px;padding-inline:12px}.brand{font-size:18.5px}.header,.content{padding-inline:26px}.rail-item{gap:12px;padding-inline:12px}}@media (width>=700px) and (height<=840px){.nav-rail{padding:18px 16px 14px}.brand{margin:0 8px 12px}.nav-caption{margin:0 12px 8px}.rail-links{gap:4px}.rail-item{min-height:46px;padding:8px 14px}.rail-links>.rail-item.rail-gap{margin-top:12px}.rail-signoff{padding-top:12px}.rail-signoff>span{font-size:15px}.rail-signoff small{margin-top:4px}}@media (width>=700px) and (height<=630px){.nav-rail{padding:12px 14px 10px}.brand{margin-bottom:8px}.nav-caption,.rail-signoff{display:none}.rail-item{min-height:44px;padding-block:6px}.rail-links>.rail-item.rail-gap{margin-top:8px}}@media (width<=699px){:root{--header-h:77px}.mobile-brand{flex-wrap:wrap;align-items:center;gap:10px 12px;padding:19px 22px 6px;font-size:26px;display:flex}.reader-view .mobile-brand{display:none}.header{flex-wrap:wrap;gap:10px;padding:17px 22px}.header h1{font-size:30px}.header-meta{font-size:14px}.content{padding:4px 22px 24px}.nav-rail,.reader-view .nav-rail{display:none}.tab-bar{padding:7px 6px max(7px,env(safe-area-inset-bottom));gap:3px}.tab-bar .rail-item{flex-direction:column;justify-content:center;gap:5px;min-height:56px;padding:7px 2px}.tab-bar .rail-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;overflow:hidden}.tab-bar .rail-item{flex:auto;min-width:0}.footer-bar{padding:9px 16px}.metro-label{gap:6px;font-size:13px}.metro-label>svg{display:none}.metronome{gap:8px}.settings-card{padding:20px}.setting-row{flex-wrap:wrap;gap:6px 12px}.setting-row label{flex-basis:100%}.sheet{--sheet-end:max(24px,env(safe-area-inset-bottom))}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.appearance-card .appearance-toggle{cursor:pointer;border:0;padding:0}.appearance-card .toggle-label{font-size:16px;font-weight:600}.appearance-card .toggle-checkbox{flex:none}.fs-controls{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 24px)}@media (width<=399px){.tab-bar{gap:0;padding-left:3px;padding-right:3px}.tab-bar .rail-item{flex:1 1 0;min-width:max-content;padding:7px 1px}.tab-bar .rail-label{font-size:11px}}@media (width<=339px){.tab-bar .rail-label{font-size:10px}}
