:root{--bg: #f5f5f7;--card: #ffffff;--card-elevated: #ffffff;--text: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #86868b;--accent: #0071e3;--accent-hover: #0077ed;--accent-soft: rgba(0, 113, 227, .1);--green: #34c759;--green-soft: rgba(52, 199, 89, .14);--orange: #ff9f0a;--orange-soft: rgba(255, 159, 10, .16);--red: #ff3b30;--red-soft: rgba(255, 59, 48, .12);--purple: #af52de;--purple-soft: rgba(175, 82, 222, .12);--fill: #e8e8ed;--fill-hover: #dcdce1;--separator: rgba(60, 60, 67, .14);--nav-bg: rgba(255, 255, 255, .8);--segment-bg: rgba(118, 118, 128, .12);--segment-thumb: #ffffff;--shadow: 0 2px 12px rgba(0, 0, 0, .06);--shadow-raised: 0 8px 30px rgba(0, 0, 0, .1);--ring-track: rgba(0, 113, 227, .14);--input-bg: #ffffff;--input-border: #d2d2d7;--overlay: rgba(0, 0, 0, .32);--radius-card: 20px;--radius-inner: 12px;--radius-pill: 980px;--ease: cubic-bezier(.25, .1, .25, 1);--dur: .25s;--sidebar-w: 248px;--content-max: 980px;--nav-h: 52px;--tabbar-h: 56px;--font: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #000000;--card: #1c1c1e;--card-elevated: #2c2c2e;--text: #f5f5f7;--text-secondary: #98989d;--text-tertiary: #7c7c80;--accent: #0a84ff;--accent-hover: #409cff;--accent-soft: rgba(10, 132, 255, .18);--green: #30d158;--green-soft: rgba(48, 209, 88, .18);--orange: #ff9f0a;--orange-soft: rgba(255, 159, 10, .2);--red: #ff453a;--red-soft: rgba(255, 69, 58, .18);--purple: #bf5af2;--purple-soft: rgba(191, 90, 242, .2);--fill: #2c2c2e;--fill-hover: #3a3a3c;--separator: rgba(84, 84, 88, .55);--nav-bg: rgba(22, 22, 23, .8);--segment-bg: rgba(118, 118, 128, .24);--segment-thumb: #636366;--shadow: 0 2px 12px rgba(0, 0, 0, .3);--shadow-raised: 0 8px 30px rgba(0, 0, 0, .5);--ring-track: rgba(10, 132, 255, .22);--input-bg: #1c1c1e;--input-border: #3a3a3c;--overlay: rgba(0, 0, 0, .6)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"palt" 0;overflow-x:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit;color:inherit}img,video,iframe{max-width:100%}:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px;border-radius:8px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:12px;top:-100px;z-index:200;padding:8px 16px;border-radius:var(--radius-pill);background:var(--card-elevated);color:var(--accent);font-weight:600;box-shadow:var(--shadow-raised)}.skip-link:focus{top:12px}#main-content:focus,.sheet:focus,.form-error:focus{outline:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}.page-title{font-size:clamp(30px,5vw,40px);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0}.page-eyebrow{font-size:14px;font-weight:600;color:var(--text-secondary);margin:0 0 6px}.page-lead{font-size:17px;color:var(--text-secondary);margin:10px 0 0;max-width:640px}.section-title{font-size:22px;font-weight:700;letter-spacing:-.015em;margin:0 0 14px}.subhead{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:none;margin:0 0 8px 20px}.muted{color:var(--text-secondary)}.small{font-size:13px}.big-number{font-size:40px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.big-number small{font-size:17px;font-weight:600;color:var(--text-secondary);letter-spacing:0;margin-left:4px}.app{min-height:100vh;min-height:100dvh}.topnav{position:sticky;top:0;z-index:40;height:var(--nav-h);display:flex;align-items:center;gap:12px;padding:0 20px;background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--separator)}.topnav-title{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.topnav-logo{display:none}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);padding:18px 12px 24px;overflow-y:auto;border-right:.5px solid var(--separator);background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);z-index:50}.sidebar-logo{display:flex;justify-content:center;padding:6px 0 18px}.sidebar-logo img{width:132px;height:auto}.sidebar-group{margin-top:18px}.sidebar-label{font-size:11px;font-weight:600;color:var(--text-tertiary);padding:0 12px;margin-bottom:4px;letter-spacing:.02em}.sidebar-link{display:flex;align-items:center;gap:10px;min-height:36px;padding:6px 12px;border-radius:8px;color:var(--text);font-size:14px;line-height:1.35;transition:background var(--dur) var(--ease)}.sidebar-link:hover{background:var(--fill);text-decoration:none}.sidebar-link.active{background:var(--accent);color:#fff}.sidebar-link svg{flex:none;color:var(--accent)}.sidebar-link.active svg{color:#fff}.sidebar-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{margin-left:var(--sidebar-w);min-width:0}.content{max-width:var(--content-max);margin:0 auto;padding:48px 40px 96px}.content.wide{max-width:1180px}.tabbar{display:none}@media (max-width: 860px){.sidebar{display:none}.main{margin-left:0}.content{padding:28px 16px calc(var(--tabbar-h) + 48px + env(safe-area-inset-bottom))}.topnav{padding:0 16px}.topnav-logo{display:block;height:26px;width:auto}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--separator)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:44px;font-size:10px;font-weight:500;color:var(--text-tertiary)}.tabbar a:hover{text-decoration:none}.tabbar a.active{color:var(--accent)}}.logo-dark{display:none}@media (prefers-color-scheme: dark){.logo-light{display:none}.logo-dark{display:block}}.stack{display:flex;flex-direction:column;gap:16px}.stack-lg{display:flex;flex-direction:column;gap:40px}.row{display:flex;align-items:center;gap:12px}.row-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.spacer{flex:1}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:36px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}@media (max-width: 860px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}}.card{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow);padding:24px}.card.flush{padding:0;overflow:hidden}.card-link{display:block;color:inherit;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.card-link:hover{text-decoration:none;transform:translateY(-2px);box-shadow:var(--shadow-raised)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 22px;border:0;border-radius:var(--radius-pill);font-size:15px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease),opacity var(--dur) var(--ease),transform .15s var(--ease);text-decoration:none!important}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.4;cursor:default;transform:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--fill);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--fill-hover)}.btn-success{background:var(--green);color:#fff}.btn-danger{background:var(--red-soft);color:var(--red)}.btn-plain{background:transparent;color:var(--accent);padding:0 10px}.btn-plain:hover:not(:disabled){background:var(--accent-soft)}.btn-sm{min-height:34px;padding:0 14px;font-size:13px}.btn-lg{min-height:52px;padding:0 30px;font-size:17px}.btn-block{width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--accent);cursor:pointer;transition:background var(--dur) var(--ease);flex:none}.icon-btn:hover:not(:disabled){background:var(--fill)}.icon-btn:disabled{opacity:.3;cursor:default}.icon-btn.danger{color:var(--red)}.segmented{position:relative;display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:2px;border-radius:9px;background:var(--segment-bg);max-width:100%}.segmented-thumb{position:absolute;top:2px;bottom:2px;left:2px;border-radius:7px;background:var(--segment-thumb);box-shadow:0 3px 8px #0000001f,0 3px 1px #0000000a;transition:transform var(--dur) var(--ease)}.segmented button{position:relative;z-index:1;min-height:32px;padding:0 16px;border:0;background:transparent;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;border-radius:7px}.segmented button[aria-selected=true]{font-weight:600}.segmented.lg button{min-height:36px;font-size:14px;padding:0 22px}@media (max-width: 560px){.segmented.full-sm{display:grid;width:100%}.segmented button{padding:0 8px}}.toggle{position:relative;display:inline-block;width:51px;height:31px;flex:none}.toggle input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:pointer;z-index:1}.toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:31px;background:var(--segment-bg);transition:background var(--dur) var(--ease)}.toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 3px 8px #00000026,0 3px 1px #0000000f;transition:transform var(--dur) var(--ease)}.toggle input:checked+.toggle-track{background:var(--green)}.toggle input:checked+.toggle-track:after{transform:translate(20px)}.toggle input:focus-visible+.toggle-track{outline:3px solid var(--accent-soft);outline-offset:2px}.list{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow);overflow:hidden;margin:0;padding:0;list-style:none}.list-row{position:relative;display:flex;align-items:center;gap:14px;min-height:52px;padding:10px 20px;color:inherit;background:transparent;border:0;width:100%;text-align:left;transition:background var(--dur) var(--ease)}a.list-row:hover,button.list-row:hover{background:var(--fill);text-decoration:none;cursor:pointer}.list-row+.list-row:before,.list>li+li>.list-row:before{content:"";position:absolute;top:0;right:0;left:var(--inset, 20px);border-top:.5px solid var(--separator)}.list-row.with-icon{--inset: 62px}.list-row.current{background:var(--accent-soft)}.list-row-icon{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;flex:none;color:#fff;background:var(--accent)}.list-row-main{flex:1;min-width:0}.list-row-title{font-size:15px;line-height:1.4;overflow-wrap:anywhere}.list-row-sub{font-size:13px;color:var(--text-secondary);line-height:1.4;margin-top:2px;overflow-wrap:anywhere}.list-row-trail{display:flex;align-items:center;gap:8px;color:var(--text-tertiary);font-size:14px;flex:none}.chevron{color:var(--text-tertiary);flex:none}.progress{height:6px;border-radius:6px;background:var(--ring-track);overflow:hidden}.progress>span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .4s var(--ease)}.progress.done>span{background:var(--green)}.progress.thin{height:4px}.ring{display:block;flex:none}.ring circle{fill:none;stroke-linecap:round}.ring .ring-track{stroke:var(--ring-track)}.ring .ring-value{stroke:var(--accent);transition:stroke-dashoffset .6s var(--ease)}.ring.done .ring-value{stroke:var(--green)}.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap;flex:none}.badge-new{background:var(--accent);color:#fff}.badge-blue{background:var(--accent-soft);color:var(--accent)}.badge-green{background:var(--green-soft);color:var(--green)}.badge-orange{background:var(--orange-soft);color:#c77700}@media (prefers-color-scheme: dark){.badge-orange{color:var(--orange)}}.badge-red{background:var(--red-soft);color:var(--red)}.badge-purple{background:var(--purple-soft);color:var(--purple)}.badge-gray{background:var(--fill);color:var(--text-secondary)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:600;color:var(--text-secondary)}.field-hint{font-size:12px;color:var(--text-tertiary)}.input,.textarea,.select{width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--input-border);border-radius:var(--radius-inner);background:var(--input-bg);font-size:16px;line-height:1.5;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.textarea{min-height:120px;resize:vertical}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.form-error{font-size:14px;color:var(--red);background:var(--red-soft);border-radius:var(--radius-inner);padding:10px 14px}.form-note{font-size:14px;color:var(--green);background:var(--green-soft);border-radius:var(--radius-inner);padding:10px 14px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:24px;animation:fade-in var(--dur) var(--ease)}.sheet{width:100%;max-width:560px;max-height:calc(100dvh - 48px);overflow-y:auto;background:var(--card-elevated);border-radius:22px;box-shadow:var(--shadow-raised);animation:sheet-in .3s var(--ease);overscroll-behavior:contain}.sheet-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;padding:14px 12px 14px 24px;background:var(--card-elevated);border-bottom:.5px solid var(--separator)}.sheet-title{flex:1;font-size:17px;font-weight:700;margin:0}.sheet-body{padding:24px}.sheet-footer{display:flex;justify-content:flex-end;gap:10px;padding:0 24px 24px}@media (max-width: 560px){.sheet-backdrop{align-items:flex-end;padding:0}.sheet{max-height:92dvh;border-radius:22px 22px 0 0;padding-bottom:env(safe-area-inset-bottom)}.sheet-footer .btn{flex:1}}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-in{0%{opacity:0;transform:translateY(16px)}}.fade-in{animation:fade-in .3s var(--ease)}.empty{text-align:center;padding:56px 24px;color:var(--text-secondary)}.empty svg{color:var(--text-tertiary);margin-bottom:12px}.empty-title{font-size:17px;font-weight:600;color:var(--text);margin:0 0 4px}.spinner{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--fill);border-top-color:var(--text-secondary);animation:spin .8s linear infinite}.center-fill{min-height:50vh;display:flex;align-items:center;justify-content:center}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;left:50%;bottom:calc(32px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:200;padding:12px 20px;border-radius:var(--radius-pill);background:#1d1d1feb;color:#f5f5f7;font-size:14px;font-weight:500;box-shadow:var(--shadow-raised);animation:sheet-in .3s var(--ease);max-width:calc(100vw - 32px)}@media (max-width: 860px){.toast{bottom:calc(var(--tabbar-h) + 20px + env(safe-area-inset-bottom))}}.divider{border:0;border-top:.5px solid var(--separator);margin:0}.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:13px;color:var(--text-secondary);margin-bottom:14px}.breadcrumb a{color:var(--text-secondary)}.breadcrumb a:hover{color:var(--accent)}.prose{font-size:16px;line-height:1.75;overflow-wrap:anywhere}.prose h1,.prose h2,.prose h3{letter-spacing:-.015em;line-height:1.3;margin:1.6em 0 .6em}.prose h1{font-size:26px}.prose h2{font-size:22px}.prose h3{font-size:18px}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose img{border-radius:var(--radius-inner)}.prose code{font-size:.9em;background:var(--fill);padding:2px 6px;border-radius:6px}.prose pre{background:var(--fill);padding:16px;border-radius:var(--radius-inner);overflow-x:auto}.prose pre code{background:none;padding:0}.prose blockquote{margin:1em 0;padding:2px 16px;border-left:3px solid var(--separator);color:var(--text-secondary)}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:.5px solid var(--separator);padding:8px 12px;text-align:left}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-secondary);padding:12px 20px;white-space:nowrap}.table td{padding:14px 20px;border-top:.5px solid var(--separator);vertical-align:middle}.table td.num{font-variant-numeric:tabular-nums}.demo-banner{background:var(--orange-soft);color:var(--text);font-size:12px;text-align:center;padding:6px 12px}.demo-role-select{margin-left:4px;font:inherit;font-weight:600;color:var(--text);background:transparent;border:.5px solid var(--separator);border-radius:6px;padding:1px 4px}.auth-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px}.auth-card{width:100%;max-width:400px}.auth-logo{display:flex;justify-content:center;margin-bottom:28px}.auth-title{font-size:32px;font-weight:700;letter-spacing:-.02em;text-align:center;margin:0 0 8px}.auth-lead{text-align:center;color:var(--text-secondary);margin:0 0 24px;font-size:15px}.auth-card form{margin-top:24px}.auth-footer{margin-top:28px;font-size:14px;color:var(--text-secondary)}.stat-card{display:flex;align-items:center;gap:18px;padding:22px 24px}.stat-icon{width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;flex:none}.stat-label{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.ring-number{font-size:26px;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}.ring-caption{font-size:12px;color:var(--text-secondary);margin-top:4px}.hero-course{display:flex;align-items:center;gap:28px;padding:28px}.hero-course-body{min-width:0}.hero-course-title{font-size:22px;font-weight:700;letter-spacing:-.015em;line-height:1.3;margin-bottom:4px}.course-card{display:flex;flex-direction:column}.course-cover{aspect-ratio:16 / 9;background:linear-gradient(135deg,var(--fill) 0%,var(--bg) 100%);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);overflow:hidden}.course-cover img{width:100%;height:100%;object-fit:cover}.course-card .course-cover{aspect-ratio:16 / 7}.course-cover.placeholder{background:radial-gradient(120% 140% at 0% 0%,var(--accent-soft) 0%,transparent 55%),radial-gradient(120% 140% at 100% 100%,var(--green-soft) 0%,transparent 55%),var(--card)}.cover-mark{opacity:.22}.cover-mark img{object-fit:contain}.course-card-body{padding:18px 20px 16px}.course-card-title{font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.35;margin-bottom:14px}@media (max-width: 560px){.hero-course{padding:22px;gap:20px}.hero-course .ring-number{font-size:22px}}.course-hero{margin-bottom:32px}.progress-card{display:flex;align-items:center;gap:36px;padding:32px;margin-bottom:44px}.progress-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:20px}.progress-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}@media (max-width: 700px){.progress-card{flex-direction:column;align-items:stretch;padding:24px 20px;gap:24px}.progress-card>:first-child{align-self:center}.progress-stats .big-number{font-size:30px}.progress-card .btn{flex:1}}.tabs-bar{display:flex;justify-content:center;margin-bottom:32px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 4px 12px}.section-index{font-size:12px;font-weight:600;color:var(--text-tertiary);margin-bottom:2px}.section-progress{display:flex;align-items:center;gap:10px;flex:none;padding-bottom:6px}.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(180deg,#a1a1a6,#8e8e93);color:#fff;font-size:15px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex:none}.avatar-lg{width:64px;height:64px;font-size:26px}.review-body{margin:12px 0 0;white-space:pre-wrap;font-size:15px;overflow-wrap:anywhere}.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px;align-items:start}.lesson-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:28px}.lesson-head>div{flex:1}.lesson-title{font-size:clamp(26px,4vw,34px);overflow-wrap:anywhere}.lesson-toc{position:sticky;top:calc(var(--nav-h) + 20px);max-height:calc(100vh - var(--nav-h) - 40px);overflow-y:auto;padding-bottom:8px;scrollbar-width:thin}.lesson-toc .list-row{min-height:46px;padding:8px 14px;--inset: 52px;gap:10px}.lesson-toc .list-row-icon{width:24px!important;height:24px!important}.lesson-toc .list-row-title{font-size:14px}.toc-head{display:flex;flex-direction:column;gap:8px;margin:0 4px 20px}.toc-title{font-size:17px;font-weight:700}.toc-section{margin-bottom:20px}.toc-section .subhead{margin-left:14px}@media (max-width: 1180px){.lesson-layout{grid-template-columns:minmax(0,1fr)}.lesson-toc{position:static;max-height:none;overflow:visible;margin-top:24px}}.player{position:relative;aspect-ratio:16 / 9;background:#000;border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow)}.player iframe,.player video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;background:#000}@media (max-width: 560px){.player{border-radius:14px}}.pdf-frame{width:100%;height:min(78vh,900px);border:0;border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow)}.pdf-loading{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.6}}.link-card{display:flex;align-items:center;gap:14px;padding:20px 22px}.live-card{display:flex;flex-direction:column;gap:20px}.lesson-actions{display:flex;justify-content:center;margin:48px 0 32px}.complete-state{display:inline-flex;align-items:center;gap:6px;padding:12px 20px;border-radius:var(--radius-pill);background:var(--fill);color:var(--text-secondary);font-size:14px;font-weight:600}.complete-state.is-done{background:var(--green-soft);color:var(--green)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pager-link{display:flex;align-items:center;gap:10px;padding:16px 18px;min-height:72px}.pager-link.next{text-align:right}.pager-title{display:block;font-size:15px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 560px){.pager{grid-template-columns:1fr}.pager>span:empty{display:none}.lesson-actions .btn{width:100%}}.assignment-status{border-left:4px solid var(--orange)}.assignment-status.status-needs_revision{border-left-color:var(--red)}.assignment-status.status-approved{border-left-color:var(--green)}.feedback{background:var(--bg);border-radius:var(--radius-inner);padding:12px 14px;font-size:15px}@media (min-width: 861px){.staff-menu-mobile{display:none}}.back-link{display:inline-flex;align-items:center;gap:2px;font-size:15px;margin:-8px 0 12px -6px;min-height:44px}.publish-switch{display:flex;align-items:center;gap:12px}.notice{display:flex;align-items:flex-start;gap:8px;padding:12px 16px;border-radius:var(--radius-inner);background:var(--fill);color:var(--text-secondary);font-size:13px;line-height:1.5}.notice svg{flex:none;margin-top:2px}.editor-row{padding-right:8px}.editor-row-title{background:transparent;border:0;padding:4px 0;text-align:left;cursor:pointer;min-height:44px;display:flex;flex-direction:column;justify-content:center}.editor-row-title:hover .list-row-title,.add-row{color:var(--accent)}@media (max-width: 560px){.editor-row{flex-wrap:wrap}.editor-row-actions{margin-left:auto}.editor-row-actions .icon-btn{width:40px}}.type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.type-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;min-height:72px;border-radius:var(--radius-inner);border:1.5px solid transparent;background:var(--fill);font-size:13px;font-weight:600;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.type-option.selected{border-color:var(--accent);background:var(--accent-soft)}.cover-edit{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.cover-edit .course-cover{width:220px;max-width:100%}.search{display:flex;align-items:center;gap:8px;flex:1 1 240px;min-height:44px;padding:0 14px;border-radius:var(--radius-inner);background:var(--segment-bg);color:var(--text-secondary)}.search input{flex:1;min-width:0;border:0;background:transparent;outline:none;font-size:16px;color:var(--text)}.search:focus-within{box-shadow:0 0 0 4px var(--accent-soft)}.role-select{width:auto;min-width:128px;min-height:36px;padding:4px 10px;font-size:14px}@media (max-width: 560px){.role-select{min-width:0;max-width:120px}}.avatar-sm{width:28px;height:28px;font-size:12px}.project-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:40px}@media (max-width: 860px){.project-top{grid-template-columns:minmax(0,1fr)}}.stepper{list-style:none;margin:0;padding:4px 0;display:grid;grid-template-columns:repeat(4,1fr)}.stepper li{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;color:var(--text-tertiary)}.stepper li+li:before{content:"";position:absolute;top:14px;right:50%;width:100%;height:2px;background:var(--fill);z-index:0}.stepper li.done+li:before,.stepper li.done+li.current:before{background:var(--accent)}.stepper-dot{position:relative;z-index:1;width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--fill);color:var(--text-secondary);font-weight:700;font-size:13px}.stepper li.done .stepper-dot{background:var(--accent);color:#fff}.stepper li.current .stepper-dot{background:var(--accent);color:#fff;box-shadow:0 0 0 5px var(--accent-soft)}.stepper li.current{color:var(--text);font-weight:600}.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start}@media (max-width: 1180px){.review-layout{grid-template-columns:minmax(0,1fr)}}.notes-panel .list-row{align-items:flex-start;padding:12px 16px 12px 8px;--inset: 52px;gap:4px}.note-check{margin-top:-8px}.note-body{font-size:15px;line-height:1.55;margin:4px 0 2px;overflow-wrap:anywhere}.note-row.resolved .note-body{color:var(--text-tertiary);text-decoration:line-through}.timecode{display:inline-flex;align-items:center;height:24px;padding:0 9px;border:0;border-radius:6px;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer}.timecode:hover{background:var(--accent);color:#fff}.timecode.muted-tc{background:var(--fill);color:var(--text-secondary);cursor:default}.note-form{margin-top:12px;padding:16px}.decision-card{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.certificate-page{min-height:100vh;background:var(--bg)}.certificate-toolbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--separator)}.certificate-scroller{padding:40px 16px 64px;overflow-x:auto}.certificate{width:297mm;height:210mm;margin:0 auto;background:#fff;color:#1d1d1f;box-shadow:var(--shadow-raised);padding:12mm;font-family:var(--font);transform-origin:top left}.certificate-frame{height:100%;border:.6mm solid #1d1d1f;outline:.25mm solid #1d1d1f;outline-offset:-2.4mm;display:flex;flex-direction:column;align-items:center;padding:12mm 24mm 10mm;text-align:center}.certificate-logo img{height:26mm;width:auto}.certificate-kicker{margin-top:6mm;font-size:3.4mm;letter-spacing:.4em;color:#6e6e73}.certificate-heading{font-size:15mm;font-weight:700;letter-spacing:.3em;margin:3mm 0 0;line-height:1.2;padding-left:.3em}.certificate-name{margin-top:9mm;font-size:10mm;font-weight:700;letter-spacing:.04em;padding:0 10mm 2mm;border-bottom:.3mm solid #1d1d1f;min-width:120mm}.certificate-name span{font-size:6mm;font-weight:500}.certificate-text{margin:8mm 0 0;font-size:4.6mm;line-height:1.9}.certificate-text strong{font-size:5.4mm}.certificate-foot{margin-top:auto;width:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;text-align:left;font-size:4.2mm}.certificate-label{font-size:3mm;color:#6e6e73;letter-spacing:.08em}.certificate-serial{font-variant-numeric:tabular-nums;letter-spacing:.04em}.certificate-sign{text-align:center}.certificate-sign-line{width:60mm;border-top:.3mm solid #1d1d1f;margin-bottom:1.5mm}@media (max-width: 1180px){.certificate-scroller{overflow-x:hidden}.certificate{zoom:.62}}@media (max-width: 760px){.certificate{zoom:.4}}@media (max-width: 480px){.certificate{zoom:.31}}@page{size:A4 landscape;margin:0}@media print{html,body,.certificate-page{background:#fff!important}.no-print{display:none!important}.certificate-scroller{padding:0;overflow:visible}.certificate{zoom:1!important;box-shadow:none;margin:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.review-actions{grid-column:1}.review-actions:empty{display:none}@media (min-width: 1181px){.notes-panel{grid-column:2;grid-row:1 / span 2}}.avatar-stack{display:inline-flex}.avatar-stack .avatar+.avatar{margin-left:-8px;box-shadow:0 0 0 2px var(--card)}.recruit-card{border-left:4px solid var(--purple)}.recruit-title{display:block;font-size:17px;font-weight:700;color:var(--text);line-height:1.4;margin-bottom:2px}.applied-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-inner);background:var(--green-soft);font-size:14px}.applicant-row{align-items:flex-start;padding-top:14px;padding-bottom:14px}.applicant-comment{margin-top:6px;padding:8px 12px;border-radius:var(--radius-inner);background:var(--bg);font-size:14px}.task-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.4fr) 110px auto;gap:10px;align-items:end;padding-bottom:14px;border-bottom:.5px solid var(--separator)}@media (max-width: 560px){.task-row{grid-template-columns:minmax(0,1fr) 110px auto}.task-row>:first-child{grid-column:1 / -1}}.recruit-text{font-size:13px;line-height:1.6;background:var(--bg);min-height:0}.recruit-head{display:flex;align-items:flex-start;gap:12px}.recruit-pay{text-align:right;flex:none}@media (max-width: 560px){.recruit-head{flex-direction:column;gap:8px}.recruit-pay{text-align:left}.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat-grid .stat-card{flex-direction:column;align-items:flex-start;gap:8px;padding:14px}.stat-grid .stat-icon{width:32px;height:32px;border-radius:9px}.stat-grid .stat-icon svg{width:16px;height:16px}.stat-grid .stat-label{font-size:11px;margin-bottom:4px;white-space:nowrap}.stat-grid .big-number{font-size:28px}.stat-grid .big-number small{font-size:13px}}.trial-note{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:var(--radius-inner);background:var(--purple-soft);color:var(--text);font-size:14px;line-height:1.55}.trial-note svg{flex:none;color:var(--purple);margin-top:3px}.trial-fields{padding:16px;border-radius:var(--radius-inner);background:var(--purple-soft)}.trial-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}@media (max-width: 560px){.trial-grid{grid-template-columns:minmax(0,1fr)}}.trial-empty{aspect-ratio:16 / 9;border-radius:var(--radius-card);background:var(--bg);color:var(--text-tertiary);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:14px}.pick{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:var(--radius-pill);background:var(--purple-soft);color:var(--purple);font-size:13px;font-weight:600;cursor:pointer;flex:none}.pick input{width:18px;height:18px;accent-color:var(--purple)}.code-chip{display:inline-block;padding:0 6px;border-radius:5px;background:var(--fill);color:var(--text-secondary);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.01em}.table th.num,.table td.num{text-align:right;white-space:nowrap}.money-number{font-variant-numeric:tabular-nums;white-space:nowrap}.big-number.money-number{font-size:30px}.money-breakdown{display:flex;flex-wrap:wrap;gap:6px 18px;padding:14px 20px;font-size:14px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.money-lines{list-style:none;margin:0;padding:0}.money-lines li{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:.5px solid var(--separator);font-size:14px}.money-lines li:first-child{border-top:0}.money-lines-label{flex:1;min-width:0;overflow-wrap:anywhere}.money-lines-panel{padding:4px 20px 14px}.clickable-row{cursor:pointer}.clickable-row:hover td,.clickable-row:focus-within td{background:var(--fill)}.row-button{padding:0;border:0;background:none;font:inherit;color:inherit;text-align:inherit;cursor:pointer}@media (max-width: 640px){.big-number.money-number{font-size:26px}}@media (max-width: 640px){.money-stats{grid-template-columns:1fr}.money-stats .stat-card{padding:16px 20px}}.collapse-head{display:flex;align-items:center;gap:10px;width:100%;padding:4px 0;background:transparent;border:0;color:inherit;text-align:left;cursor:pointer}.sidebar-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:0;cursor:pointer;text-align:left;font-family:inherit}@media (max-width: 640px){.big-number.home-money{font-size:20px;margin-top:8px}}.filter-chips{display:flex;gap:8px;margin:0 0 20px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.filter-chips::-webkit-scrollbar{display:none}.chip{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:36px;padding:0 14px;border:0;border-radius:var(--radius-pill);background:var(--card);box-shadow:inset 0 0 0 1px var(--separator);color:var(--text);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer}.chip:hover{background:var(--fill)}.chip[aria-pressed=true]{background:var(--text);color:var(--card);box-shadow:none}.chip-count{font-variant-numeric:tabular-nums;font-weight:500;opacity:.7}.projects-view-head{align-items:center;flex-wrap:wrap;margin-bottom:16px}.board-section+.board-section{margin-top:20px}.board-head-wrap{margin:0 0 12px;font-size:inherit}.board-head{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 4px;border:0;background:transparent;color:var(--text);font-size:17px;font-weight:700;text-align:left;cursor:pointer}.board-head:disabled{cursor:default}.board-head:disabled .board-chevron{visibility:hidden}.board-dot{width:10px;height:10px;border-radius:50%;flex:none}.board-count{font-size:13px;font-weight:600;color:var(--text-tertiary);font-variant-numeric:tabular-nums}.board-chevron{color:var(--text-tertiary);transition:transform var(--dur) var(--ease);transform:rotate(-90deg)}.board-chevron.open{transform:none}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.board-card{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border-left:4px solid transparent}.board-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.board-card-title{font-size:16px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.board-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;font-size:13px}.deadline-chip{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.deadline-chip.urgent{color:var(--red);font-weight:600}.people{display:flex;flex-wrap:wrap;gap:4px 12px}.person{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;min-width:0}.person .avatar-sm{width:22px;height:22px;font-size:11px}.progress-line{display:flex;align-items:center;gap:10px}.progress-line .progress{flex:1;min-width:40px}.progress-pct{flex:none;min-width:36px;text-align:right;font-size:12px;font-weight:700;color:var(--text-secondary);font-variant-numeric:tabular-nums}.stepper{grid-template-columns:repeat(var(--steps, 4),minmax(0,1fr))}.stepper-label{text-align:center;line-height:1.3;word-break:keep-all;overflow-wrap:anywhere}@media (max-width: 560px){.stepper li{font-size:11px;gap:6px}.stepper-dot{width:26px;height:26px;font-size:12px}.stepper li+li:before{top:12px}}.checklist{list-style:none;margin:0;padding:0}.checklist li{display:flex;align-items:center;gap:12px;min-height:44px;border-top:.5px solid var(--separator);color:var(--text-secondary)}.checklist li:first-child{border-top:0}.checklist li svg{flex:none;color:var(--text-tertiary)}.checklist li.done{color:var(--text)}.checklist li.done svg{color:var(--green)}.checklist li.current{color:var(--text);font-weight:600}.checklist li.current svg{color:var(--accent)}.checklist li .small{color:var(--text-tertiary);font-weight:500}.member-card{padding:18px 20px}.member-head{display:flex;align-items:center;gap:12px}.member-badges{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}.member-free{margin:12px 0 0;padding:10px 14px;border-radius:var(--radius-inner);background:var(--green-soft);color:var(--text);font-size:14px}.member-projects{list-style:none;margin:12px 0 0;padding:0}.member-projects li+li{border-top:.5px solid var(--separator)}.member-project{display:flex;flex-direction:column;gap:6px;padding:12px 4px;color:inherit;border-radius:10px}.member-project:hover{text-decoration:none;background:var(--fill)}.member-project-title{font-size:15px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.grid-4 .stat-card{padding:20px;gap:14px}@media (max-width: 1100px){.grid-4 .stat-card{flex-direction:column;align-items:flex-start}}@media (max-width: 860px){.grid-4,.stat-grid.stat-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}.see-all{display:inline-flex;align-items:center;gap:2px;font-size:14px;font-weight:600;white-space:nowrap}.home-projects{margin:0;padding:4px 16px}.notice-row{gap:12px}.notice-icon{width:34px;height:34px;border-radius:10px}.notice-text{font-weight:600}.pay-cards-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px}.pay-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}@media (max-width: 560px){.pay-grid{grid-template-columns:minmax(0,1fr)}}.pay-card{display:flex;flex-direction:column;gap:6px;padding:16px 18px}.pay-card-top{display:flex;align-items:center;gap:8px}.pay-card-title{font-size:16px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.pay-card-foot{display:flex;align-items:center;gap:6px 12px;margin-top:6px;padding-top:10px;border-top:.5px solid var(--separator)}.pay-card-dates{font-variant-numeric:tabular-nums}.pay-card-amount{margin-left:auto;font-size:20px;font-weight:700}@media (max-width: 560px){.grid-4{gap:8px}.grid-4 .stat-card{flex-direction:row;align-items:center;gap:12px;padding:14px}}.pay-card-left{display:flex;flex-direction:column;gap:4px;min-width:0}.rank-no{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--fill, rgba(120, 120, 128, .12));font-weight:700;font-variant-numeric:tabular-nums}.rank-top{color:#fff}.rank-1{background:#d4a017}.rank-2{background:#8e8e93}.rank-3{background:#b5651d}.member-stats{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-variant-numeric:tabular-nums}
