:root{--ink:#202c25;--ink-2:#34463a;--red:#9f3d35;--paper:#f5f1e8;--paper-2:#fcfaf5;--line:#ded8ca;--muted:#6f786f;--green:#486c55;--shadow:0 18px 45px rgba(36,42,35,.09)}
*{box-sizing:border-box}body{margin:0;background:var(--paper-2);color:var(--ink);font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif}button,input,textarea{font:inherit}button{cursor:pointer}.app-header{height:76px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;background:rgba(252,250,245,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--red);color:#fff;border-radius:7px;font-family:serif;font-size:25px}.brand b{font-size:18px}.brand small{display:block;margin-top:2px;color:var(--muted);font-size:11px}.date-control{display:flex;align-items:center;gap:14px}.date-badge{padding:7px 11px;border-radius:20px;background:#edf0eb;color:var(--ink-2);font-size:13px}.date-badge.simulated{background:#f3dedb;color:var(--red);font-weight:700}.switch{display:flex;align-items:center;gap:8px;font-size:13px}.switch input{display:none}.switch i{width:35px;height:20px;border-radius:20px;background:#c9ccc7;position:relative;transition:.2s}.switch i:after{content:"";width:14px;height:14px;border-radius:50%;position:absolute;left:3px;top:3px;background:#fff;transition:.2s}.switch input:checked+i{background:var(--red)}.switch input:checked+i:after{left:18px}input[type=date]{border:1px solid var(--line);border-radius:7px;background:#fff;padding:7px 9px;color:var(--ink)}input:disabled{opacity:.42}.app-shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 76px)}.sidebar{padding:28px 20px;border-right:1px solid var(--line);background:#f8f5ee;display:flex;flex-direction:column;justify-content:space-between}.sidebar nav{display:grid;gap:8px}.sidebar nav button{border:0;background:transparent;padding:12px 14px;border-radius:9px;text-align:left;color:var(--muted);display:flex;align-items:center;gap:12px}.sidebar nav button span{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--line);border-radius:7px;font-family:serif}.sidebar nav button.active{background:#fff;color:var(--ink);font-weight:700;box-shadow:0 5px 20px rgba(40,45,39,.06)}.sidebar nav button.active span{background:var(--ink);color:#fff}.sidebar-note{font-size:12px;color:var(--muted);padding:16px;border:1px solid var(--line);background:var(--paper-2);border-radius:10px}.sidebar-note p{line-height:1.55;margin:5px 0 0}main{padding:44px 5vw 70px;max-width:1400px;width:100%;margin:auto}.eyebrow{color:var(--red);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h2{font-size:34px;margin:8px 0 10px}h3{font-size:21px;margin:5px 0}.page-intro{margin-bottom:30px}.page-intro p,.hero-card p{color:var(--muted);margin:0;line-height:1.65}.hero-card{padding:30px 34px;border-radius:16px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow);margin-bottom:40px}.hero-card .eyebrow{color:#e2b9b4}.hero-card p{color:#c9d0cb}.hero-stats{display:flex;gap:38px}.hero-stats div{text-align:center}.hero-stats strong{display:block;font-family:serif;font-size:42px}.hero-stats span{font-size:12px;color:#c9d0cb}.section-title{display:flex;align-items:end;justify-content:space-between;margin:30px 0 16px}.task-list{display:grid;gap:10px}.task-row{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:14px 18px;display:flex;align-items:center;text-align:left;transition:.18s}.task-row:hover{border-color:#b8ad98;transform:translateY(-1px);box-shadow:0 8px 25px rgba(38,42,35,.06)}.character-mini{width:52px;height:52px;display:grid;place-items:center;background:var(--paper);border-radius:8px;font-family:serif;font-size:30px;margin-right:15px}.task-copy{display:grid;gap:5px}.task-copy small{color:var(--muted)}.arrow{margin-left:auto;font-size:20px}.empty{text-align:center;border:1px dashed #cbc2b1;border-radius:14px;padding:36px;color:var(--muted)}.empty span{font-family:serif;color:var(--red);font-size:30px}.empty h3{color:var(--ink)}.empty.prominent{padding:70px}.primary,.secondary,.danger,.file-button{border:0;border-radius:8px;padding:11px 16px;font-weight:700;display:inline-block}.primary{background:var(--red);color:#fff}.secondary,.file-button{background:var(--ink);color:#fff}.danger{background:#f5dedb;color:#8a2924}.wide{width:100%;margin-top:24px}.book-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.book-card{min-height:470px;border-radius:14px;overflow:hidden;position:relative;background:var(--ink);box-shadow:var(--shadow);cursor:pointer}.book-card img{width:100%;height:100%;object-fit:cover;position:absolute;filter:grayscale(1) contrast(1.12);transition:.35s}.book-card:hover img{transform:scale(1.025)}.book-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(17,24,19,.05) 20%,rgba(17,24,19,.94) 88%)}.book-info{position:absolute;inset:auto 22px 22px;color:#fff}.book-info h3{font-size:27px;font-family:serif;margin:10px 0 4px}.book-info p{color:#cdd2ce;margin:0 0 18px}.script-chip{background:rgba(255,255,255,.15);padding:5px 9px;border:1px solid rgba(255,255,255,.25);border-radius:20px;font-size:11px}.catalog-status{border-top:1px solid rgba(255,255,255,.2);padding-top:13px;display:flex;justify-content:space-between;font-size:12px}.catalog-status.studied span{color:#cce5d3}.catalog-status.unstarted{color:#c5c9c6}.progress-line{height:3px;background:rgba(255,255,255,.2);margin:13px 0 7px}.progress-line i{display:block;height:100%;background:#d4a39c}.book-info>small{color:#c5c9c6}.image-missing:before{content:"拓本预览待下载";position:absolute;inset:0;display:grid;place-items:center;color:#aeb7b0;font-family:serif;font-size:22px}.detail-hero{display:grid;grid-template-columns:minmax(280px,42%) 1fr;gap:42px;align-items:center;margin:25px 0 28px}.detail-hero img{width:100%;height:380px;object-fit:cover;filter:grayscale(1) contrast(1.1);border-radius:12px;background:var(--ink)}.detail-hero h2{font-family:serif;font-size:42px}.detail-hero .source{color:var(--muted);margin-top:32px}.detail-hero a{color:var(--red)}.text-button{border:0;background:transparent;color:var(--red);padding:0}.detail-summary{display:grid;grid-template-columns:repeat(4,1fr);background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden}.detail-summary div{padding:18px;border-right:1px solid var(--line)}.detail-summary div:last-child{border:0}.detail-summary small{display:block;color:var(--muted);margin-bottom:6px}.detail-summary strong{font-size:18px}.character-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.character-record{background:#fff;border:1px solid var(--line);border-radius:9px;padding:13px;display:grid;gap:6px}.character-record b{font-family:serif;font-size:29px}.character-record small{font-size:11px;color:var(--muted)}.status{font-size:11px;font-weight:700}.status.skilled{color:var(--green)}.status.normal{color:#9b722f}.status.weak{color:var(--red)}.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.tool-grid article{padding:24px;border:1px solid var(--line);border-radius:12px;background:#fff}.tool-grid p{color:var(--muted);line-height:1.6}.file-button input{display:none}.danger-zone{border-color:#e7c8c4!important}.modal{position:fixed;inset:0;background:rgba(23,29,25,.62);z-index:50;display:grid;place-items:center;padding:20px;backdrop-filter:blur(5px)}.modal[hidden]{display:none}.modal-card{max-width:630px;width:100%;background:var(--paper-2);border-radius:16px;padding:32px;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.25)}.modal-close{position:absolute;right:18px;top:15px;border:0;background:transparent;font-size:28px;color:var(--muted)}.practice-character{font-family:serif;font-size:110px;text-align:center;padding:22px}.practice-tip{background:var(--paper);border-left:3px solid var(--red);padding:13px 15px;line-height:1.6;color:var(--muted)}.modal label{display:grid;gap:7px;font-size:13px;font-weight:700}.modal textarea{min-height:70px;resize:vertical;border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff}.modal fieldset{border:0;padding:0;margin:22px 0 0}.modal legend{font-weight:800;margin-bottom:12px}.status-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.status-actions button{border:1px solid var(--line);border-radius:10px;background:#fff;padding:13px;text-align:left}.status-actions button:hover{border-color:var(--red);background:#fdf6f4}.status-actions b,.status-actions small{display:block}.status-actions small{color:var(--muted);font-size:10px;line-height:1.45;margin-top:5px}.toast{position:fixed;right:25px;bottom:25px;background:var(--ink);color:#fff;padding:12px 18px;border-radius:9px;opacity:0;transform:translateY(10px);transition:.25s;z-index:80}.toast.show{opacity:1;transform:none}.muted{color:var(--muted)}
@media(max-width:900px){.app-header{height:auto;min-height:76px;flex-wrap:wrap;padding:14px 18px;gap:12px}.date-control{flex-wrap:wrap}.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);padding:10px 14px}.sidebar nav{display:flex}.sidebar nav button{flex:1;justify-content:center}.sidebar-note{display:none}main{padding:28px 18px 60px}.book-grid{grid-template-columns:1fr}.book-card{min-height:390px}.hero-card{align-items:flex-start;gap:20px}.detail-hero{grid-template-columns:1fr}.detail-summary{grid-template-columns:repeat(2,1fr)}.character-grid{grid-template-columns:repeat(3,1fr)}.tool-grid{grid-template-columns:1fr}.status-actions{grid-template-columns:1fr}}
.character-mini{font-size:0;overflow:hidden}.character-mini img{width:100%;height:100%;object-fit:contain;filter:grayscale(1) contrast(1.08)}
.practice-character{font-size:inherit;display:grid;justify-items:center;gap:6px;padding:18px}.practice-character img{width:190px;height:190px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:8px;filter:grayscale(1) contrast(1.08)}.practice-character span{font-size:13px;color:var(--muted)}
.schedule-note{padding:11px 14px;background:#f5eadc;border-radius:8px;color:#725d3e;font-size:13px}.data-scope{margin:24px 0;padding:15px;background:var(--paper);border-left:3px solid var(--red);border-radius:4px}.data-scope p{color:var(--muted);line-height:1.6;margin:6px 0}.number-setting{display:flex!important;align-items:center;gap:10px!important}.number-setting input{width:90px;border:1px solid var(--line);border-radius:8px;padding:9px}.number-setting span{color:var(--muted);font-weight:400}
.task-row{padding:9px 12px;min-height:54px}.character-mini{width:36px;height:36px;flex:0 0 36px;margin-right:12px;border-radius:6px}.task-copy{min-width:0}.task-copy strong{font-size:14px}.task-copy small{font-size:12px}.book-task-section{margin-bottom:38px}.plan-progress{padding:7px 11px;border-radius:20px;background:var(--paper);color:var(--red);font-weight:700;font-size:13px}.empty.compact{padding:20px}.empty.compact span{font-size:22px}.empty.compact h3{font-size:16px}.detail-actions{margin-top:24px;padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:#fff;display:flex;justify-content:space-between;align-items:center;gap:16px}
.plan-header-actions,.action-buttons{display:flex;align-items:center;gap:10px}.plan-header-actions .text-button{font-size:12px}.danger-text{color:#9b3c35}.catalog-status.paused span{color:#f0c59f}.action-buttons .secondary{background:#eee9df;color:var(--ink)}
@media(max-width:600px){.detail-actions{align-items:stretch;flex-direction:column}.detail-actions .primary{width:100%}}
.book-grid{grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}.setting-icon{float:right;display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:var(--paper);color:var(--red);font-family:serif;font-weight:700}.select-setting{display:grid;gap:7px;margin:14px 0;font-size:13px}.select-setting select{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px;color:var(--ink)}.duplicate-dialog p{color:var(--muted);line-height:1.65}.dialog-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}
