:root{--ink:#1d2129;--ground:#f4f4f1;--panel:#fff;--border:#deddd7;--muted:#5b606b;--blue:#2b5aa0;--orange:#a9541a;--plum:#6a3d7a;--red:#a3322b;--green:#5e7f3a;--topbar-text:#c9cdd5;--font-ui:"IBM Plex Sans", "Segoe UI", "Helvetica Neue", sans-serif;--font-prose:"Newsreader", Georgia, serif}*{box-sizing:border-box}body{background:var(--ground);color:var(--ink);font-family:var(--font-ui);margin:0;font-size:14px}a{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--ink);color:var(--ground);flex-wrap:wrap;align-items:center;gap:12px 32px;padding:12px 24px;display:flex}.brand{align-items:baseline;gap:12px;display:flex}.brand-app{letter-spacing:.08em;text-transform:uppercase;color:#b9bdc6;font-size:13px;font-weight:600}.brand-title{font-family:var(--font-prose);font-size:22px;font-weight:600}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tabs a{min-height:44px;color:var(--topbar-text);border-radius:6px;align-items:center;padding:0 14px;text-decoration:none;display:inline-flex}.tabs a:hover{color:#fff}.tabs a.on{color:#fff;background:#3a404c;font-weight:500}.tabs a:focus-visible{outline-color:#9cb8e4}.save-status{color:#d6d9df;align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.save-dot{border-radius:50%;width:10px;height:10px}.save-dot.idle{border:1.5px solid #8c8b84}.main{flex:1;padding:20px 24px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:24px}.label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:600}.coming-soon{max-width:640px}.coming-soon h1{font-family:var(--font-prose);margin:0 0 8px;font-size:28px;font-weight:600}.coming-soon p:last-child{color:var(--muted);margin:0;font-size:15px;line-height:1.5}.btn{background:var(--panel);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;border:1px solid #c8c7c0;border-radius:6px;padding:0 14px}.btn.ghost{background:0 0}.update-banner{background:#dce6f5;border-bottom:1px solid #b9cbe8;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 24px;display:flex}.brand-title{color:inherit;border-radius:6px;text-decoration:none}.brand-title:hover .brand-switch{color:#fff}.brand-switch{font-family:var(--font-ui);color:#8f95a1;font-size:14px}.save-dot.saved{background:#7fae58}.save-dot.saving{background:#e0a85c}.save-dot.error{background:#e4675e}.stack{flex-direction:column;gap:20px;max-width:820px;display:flex}.narrow{max-width:640px}.panel h1{font-family:var(--font-prose);margin:0 0 12px;font-size:28px;font-weight:600}.panel h2{margin:16px 0 8px;font-size:17px;font-weight:600}.panel h2:first-child{margin-top:0}.panel h3{margin:20px 0 6px;font-size:14px;font-weight:600}.panel p{line-height:1.5}.muted{color:var(--muted)}.small{font-size:13px}.error-text{color:var(--red)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grow{flex:200px;min-width:0}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.input{background:var(--panel);min-height:44px;color:var(--ink);font:inherit;border:1px solid #c8c7c0;border-radius:6px;padding:0 12px}.title-input{font-family:var(--font-prose);font-size:18px}.btn{align-items:center;text-decoration:none;display:inline-flex}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.file-btn{cursor:pointer}.pill{background:#e7e9ee;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500}.book-list{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.book-list li{border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px;display:flex}.book-list li.current{background:#f1f2f4}.banner{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 12px;padding:10px 24px;line-height:1.45;display:flex}.banner>span{flex:320px}.banner.warn{background:#f6e3d3}.banner.error{background:#f8e1de}.banner.info{background:#dce6f5}.import{margin-top:8px}.import-review ul,.import-result ul{margin:8px 0 12px;padding-left:20px;line-height:1.6}.choices{border:1px solid var(--border);border-radius:8px;margin:0 0 12px;padding:12px}.choices legend{padding:0 6px;font-weight:500}.choices label{cursor:pointer;align-items:flex-start;gap:10px;padding:8px 0;line-height:1.45;display:flex}.choices input{width:18px;height:18px;accent-color:var(--ink);margin-top:4px}
