:root{--ink:#24352f;--muted:#84908a;--line:#e8ece7;--green:#345f4b;--yellow:#f5c849;--cream:#f8f7f2;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--cream);font-size:14px}button,input,select{font:inherit}button{cursor:pointer;border:0;transition:background .15s,transform .15s}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #d3b652;outline-offset:3px}input:focus,select:focus{outline:2px solid #a7c5ac;border-color:transparent}input,select{width:100%;background:#fff;border:1px solid #dfe5dd;border-radius:10px;padding:12px;color:var(--ink);margin-top:8px}label{display:block;font-size:13px;font-weight:600;margin-bottom:18px}small{color:var(--muted)}h1{font-size:30px;letter-spacing:-1px;margin:0 0 10px}h2{font-size:20px;margin:0 0 8px}h3{font-size:16px;margin:0}p{color:var(--muted);line-height:1.8;margin:8px 0 22px}.primary,.secondary,.quiet,.danger{display:inline-flex;justify-content:center;align-items:center;gap:10px;padding:12px 18px;border-radius:9px;font-weight:600;white-space:nowrap}.primary{background:var(--green);color:white}.primary:hover{background:#264934}.secondary{background:#f1f4ef;color:var(--ink);border:1px solid var(--line)}.quiet{background:transparent;color:#6d7c74;padding:8px 12px}.danger{background:#fff0eb;color:#ac5039}.full{width:100%;justify-content:space-between}.error{color:#b44630;font-size:13px;line-height:1.6;margin:10px 0;min-height:1px}.brand-mark{display:grid;place-items:center;background:var(--yellow);width:44px;height:44px;border-radius:14px;color:#426048;font-size:23px;font-weight:800;flex-shrink:0}.login-wrap{min-height:100vh;padding:40px 6%;background:radial-gradient(ellipse at 80% 80%,#dfebdf 0,transparent 45%),var(--cream)}.login-brand,.brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:700}.login-brand small{display:block;font-size:10px;letter-spacing:3px;margin-top:5px}.login-card{max-width:460px;padding:40px;border:1px solid #e9ede4;border-radius:24px;background:white;margin:8vh auto 24px;box-shadow:0 22px 70px #34523b0b}.login-card h1{font-size:28px}.eyebrow{color:#779071;font-size:12px;letter-spacing:2px;margin-bottom:16px}.login-note,.login-footer{font-size:12px;color:#97a091;text-align:center;margin-top:25px}.workspace{display:grid;grid-template-columns:226px 1fr;min-height:100vh}.workspace[hidden],main[hidden]{display:none}aside{position:fixed;top:0;bottom:0;width:226px;background:#fff;border-right:1px solid var(--line);padding:29px 18px 14px;display:flex;flex-direction:column}.brand{padding:0 9px 35px;font-size:20px}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:3px;margin-top:5px}.nav-label{font-size:10px;letter-spacing:2px;color:#a2aba4;padding:4px 18px 15px}nav button{display:flex;gap:14px;align-items:center;width:100%;text-align:left;padding:14px 17px;border-radius:11px;background:transparent;color:#7a867f;margin-bottom:6px;font-weight:500}nav i{font-style:normal;font-size:22px;width:23px;color:#7d8a80}nav button.active{background:#eaf1e8;color:var(--green);font-weight:700}nav button.active i{color:var(--green)}nav button:hover{background:#f1f4ee}.aside-note{margin:auto 10px 24px;background:#fcf6e3;padding:18px 14px;font-size:12px;border-radius:14px;line-height:1.9}.aside-note small{font-size:11px}.status-dot{display:inline-block;width:6px;height:6px;background:#6e9f7e;border-radius:50%;margin-right:7px}.account{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);padding:19px 5px 3px}.avatar{width:34px;height:34px;background:#e9f0e5;border-radius:50%;display:grid;place-items:center}.account strong{font-size:12px}.account small{display:block;font-size:10px;margin-top:3px}.account button{margin-left:auto;background:none;color:#8c968d;font-size:19px}.main{grid-column:2;min-width:0}header{height:78px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:#fafaf7}.breadcrumb{font-size:12px;color:#93a094}.breadcrumb span{margin:0 14px;color:#bbc4ba}.breadcrumb b{color:#536558;font-weight:500}.header-right{display:flex;align-items:center;font-size:11px;color:#8d9b90;gap:5px}.header-right button{margin-left:17px}.content{padding:34px 38px;max-width:1600px;margin:auto;min-height:calc(100vh - 130px)}.page-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:20px}.page-top p{font-size:13px;margin:0}.page-top h1{font-size:29px}.welcome-tag{font-size:11px;color:#8a996f;padding:7px 11px;background:#eff1df;border-radius:6px;display:inline-block;margin-bottom:12px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:24px}.stat{padding:22px;border:1px solid var(--line);border-radius:15px;background:white;position:relative}.stat-icon{position:absolute;right:20px;top:19px;width:37px;height:37px;border-radius:11px;display:grid;place-items:center;background:#edf3e9;color:#648466;font-size:21px}.stat:nth-child(2) .stat-icon{background:#fcf4d6;color:#a68839}.stat:nth-child(3) .stat-icon{background:#eaf1f6;color:#668398}.stat:nth-child(4) .stat-icon{background:#f3edfa;color:#9c89b5}.stat .label{font-size:12px;color:#7f8d82}.stat .number{font-size:35px;font-weight:600;margin:17px 0 10px;letter-spacing:-1px}.stat .foot{color:#9aa297;font-size:11px}.dashboard-row{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:22px;margin:22px 0}.panel{background:white;border:1px solid var(--line);border-radius:15px;padding:24px;min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.panel-head small{font-size:11px}.chart{height:180px;display:flex;align-items:flex-end;gap:12px;padding-top:20px;border-bottom:1px solid var(--line)}.chart-column{flex:1;display:flex;align-items:center;flex-direction:column;height:100%;justify-content:flex-end;min-width:0}.bar{width:60%;max-width:25px;border-radius:5px 5px 0 0;background:#adc4a9;min-height:2px}.chart-column:nth-last-child(1) .bar{background:#e7b944}.chart-column small{font-size:9px;padding-top:10px;height:24px;white-space:nowrap}.chart-legend{display:flex;justify-content:space-between;font-size:11px;color:#8b978d;margin-top:15px}.quick-links{display:grid;gap:10px}.quick-links button{display:flex;align-items:center;text-align:left;padding:17px;background:#f8f9f3;border:1px solid #edf0e7;border-radius:11px;color:var(--ink);gap:14px}.quick-links button b{font-weight:600}.quick-links small{display:block;margin-top:4px;font-size:11px}.quick-links .q-icon{font-size:24px;color:#91a480}.quick-links .arrow{margin-left:auto;color:#a2ad99}.note-strip{background:#f9f3df;padding:20px 24px;border-radius:13px;color:#907e49;font-size:12px;line-height:1.9;display:flex;align-items:center;gap:15px}.note-strip strong{color:#70603b}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap;text-align:left}th{padding:15px 18px;background:#fbfcf9;color:#8e9b8e;font-size:11px;font-weight:500}td{padding:17px 18px;border-top:1px solid #edf0e9}td.title{font-weight:600;white-space:normal;min-width:180px;max-width:300px}td small{display:block;margin-top:5px;font-weight:400}.badge{display:inline-block;border-radius:5px;padding:5px 8px;font-size:10px;background:#eff4e9;color:#668451}.badge.off{background:#f4f2ee;color:#a69a86}.badge.admin{background:#ececf8;color:#8281a5}.row-action{padding:6px 8px;background:transparent;color:#617b65;font-size:12px}.row-action.red{color:#b78e7c}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 20px;flex-wrap:wrap}.search{display:flex;gap:8px;max-width:410px}.search input{margin:0;min-width:230px;padding:10px 14px}.filters{display:flex;gap:10px}.filters select{margin:0;min-width:180px}.empty{padding:65px 25px;text-align:center;color:#94a08e}.empty .empty-icon{font-size:45px;color:#b9c5b0;margin-bottom:16px}.empty strong{display:block;color:#647660;font-size:17px;margin-bottom:8px}.pager{display:flex;align-items:center;justify-content:space-between;margin-top:16px;color:#92a08f;font-size:12px}.pager .buttons{display:flex;gap:7px}.folder-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.folder-card{padding:22px;background:#fff;border:1px solid var(--line);border-radius:14px}.folder-icon{color:#dcb653;font-size:32px}.folder-card h3{margin:13px 0 8px}.folder-card .folder-path{font-size:11px;color:#96a08f;margin-bottom:20px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.setting-line{display:flex;justify-content:space-between;align-items:center;margin:16px 0}.setting-line input{width:20px;margin:0}.helper{font-size:12px;color:#909c89;line-height:1.8;margin:12px 0}.upload-zone{background:#f8faf4;border:1px dashed #b7c7a8;border-radius:12px;padding:25px;text-align:center;margin:15px 0}.upload-zone input{background:none;border:0;max-width:340px}.upload-progress{height:8px;appearance:none;width:100%;border-radius:6px}.upload-progress::-webkit-progress-bar{background:#edf1e7;border-radius:6px}.upload-progress::-webkit-progress-value{background:#759a69;border-radius:6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}dialog{width:min(560px,calc(100vw - 28px));border:1px solid var(--line);border-radius:20px;padding:26px;color:var(--ink);max-height:90vh;box-shadow:0 30px 100px #14241520}dialog::backdrop{background:#20352a55;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.dialog-actions .primary{min-width:90px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#2a4638;color:white;border-radius:10px;padding:14px 23px;box-shadow:0 6px 30px #0002;z-index:100;max-width:90vw}.toast.error-toast{background:#874c3d}footer{padding:16px 38px;font-size:10px;color:#a4ae9e;display:flex;justify-content:space-between;border-top:1px solid var(--line)}.file-type{display:inline-flex;align-items:center;justify-content:center;width:37px;height:45px;background:#f9f0d9;color:#b89b52;border-radius:7px;font-size:10px;margin-right:12px;vertical-align:middle}.book-cell{display:flex;align-items:center}.book-cell>div{min-width:0}.book-cell span.name{display:block;max-width:230px;overflow:hidden;text-overflow:ellipsis}.loading{padding:90px;text-align:center;color:#8e9d86}@media(max-width:1050px){.workspace{grid-template-columns:190px 1fr}aside{width:190px;padding:25px 10px}.brand{font-size:17px}.content{padding:25px}.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-row{grid-template-columns:1fr}.folder-grid{grid-template-columns:repeat(2,1fr)}header{padding:0 25px}}@media(max-width:700px){.workspace{display:block}aside{position:static;width:auto;padding:16px}.brand{padding-bottom:16px}aside .nav-label,.aside-note,.account{display:none}nav{display:flex;overflow:auto}nav button{width:auto;white-space:nowrap;padding:10px 12px;font-size:12px}nav i{display:none}header{height:55px;padding:0 18px}.header-right #clock{display:none}.content{padding:22px 16px}.page-top{align-items:flex-start;gap:10px}.page-top h1{font-size:24px}.page-top p{font-size:11px}.page-top>.primary{padding:11px;font-size:12px}.stats-grid{gap:10px}.stat{padding:18px}.stat-icon{right:14px;top:15px;width:27px;height:27px;font-size:17px}.stat .number{font-size:30px}.panel{padding:19px}.folder-grid,.settings-grid{grid-template-columns:1fr}.search input{min-width:160px}.toolbar{align-items:stretch}.form-row{grid-template-columns:1fr}.login-card{padding:28px}.chart{gap:5px}footer{padding:16px}.header-right .quiet{margin-left:0}footer span{display:none}}

.narration-dialog{width:min(980px,calc(100vw - 28px))}.narration-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.narration-toolbar button{padding:10px 14px;border-radius:10px;background:#edf2e5;color:#334d40}.narration-toolbar .primary{background:#f1cb72}.narration-dialog textarea{width:100%;box-sizing:border-box;padding:14px;border:1px solid #d8dfd0;border-radius:10px;font:inherit;line-height:1.6}.narration-dialog audio{width:100%}.narration-words{max-height:290px;overflow:auto;border:1px solid #e4e8dd;border-radius:12px}.narration-words table{width:100%}.narration-words td{padding:5px 10px}.narration-words input{width:100px;margin:0;padding:8px}.narration-words .next-cue{background:#eef4e7}.narration-words .speaking{background:#fff0ba;color:#a46317}.narration-dialog details{margin-top:20px}
