@font-face{font-family:Inter UI;src:url(/fonts/inter-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Inter UI;src:url(/fonts/inter-600.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Inter UI;src:url(/fonts/inter-700.woff2) format("woff2");font-weight:700;font-display:swap}:root{--canvas: #F7F8FA;--surface: #FFFFFF;--ink: #071523;--nav: #071523;--muted: #526071;--border: #DEE3E9;--brand: #FF8500;--brand-strong: #B94A00;--brand-soft: #FFF1E2;--nav-text: #E8EDF2;--nav-muted: #9AA8B6;--ok: #1E7A4C;--ok-soft: #E6F4EC;--warn: #8A5300;--warn-soft: #FFF4DB;--danger: #B3261E;--danger-soft: #FCE8E6;--info-soft: #EAF0F6;--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 2px rgba(7, 21, 35, .06), 0 2px 8px rgba(7, 21, 35, .05);--shadow-lg: 0 12px 32px rgba(7, 21, 35, .16);--focus: 0 0 0 3px rgba(255, 133, 0, .45);--font: "Inter UI", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased}a{color:var(--brand-strong)}h1,h2,h3,h4{margin:0;line-height:1.25;letter-spacing:-.01em}h1{font-size:24px;font-weight:700}h2{font-size:18px;font-weight:700}h3{font-size:15px;font-weight:600}p{margin:0 0 .6em}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{display:grid;grid-template-columns:236px 1fr;min-height:100%}.sidebar{background:var(--nav);color:var(--nav-text);display:flex;flex-direction:column;padding:18px 14px;position:sticky;top:0;height:100vh}.brandmark{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;font-weight:700;font-size:15px;letter-spacing:-.01em;color:#fff;text-decoration:none}.brandmark .logo{width:30px;height:30px;border-radius:8px;background:var(--brand);display:grid;place-items:center;color:var(--nav);flex:none}.brandmark small{display:block;font-weight:400;color:var(--nav-muted);font-size:11px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-sm);color:var(--nav-text);text-decoration:none;font-weight:500;border-left:3px solid transparent}.nav a:hover{background:#ffffff0f}.nav a.active{background:#ff850024;border-left-color:var(--brand);color:#fff}.nav a.active svg{color:var(--brand)}.nav-section{margin:18px 10px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--nav-muted)}.sidebar .spacer{flex:1}.sidebar .who{font-size:12px;color:var(--nav-muted);padding:8px 10px;border-top:1px solid rgba(255,255,255,.08)}.sidebar .who b{color:var(--nav-text);display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:14px 28px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:20}.topbar .title{flex:1;min-width:0}.topbar .title h1{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .crumbs{font-size:12px;color:var(--muted)}.content{padding:24px 28px 48px;max-width:1280px;width:100%}.content.wide{max-width:none;padding:0}.demo-banner{background:var(--brand-soft);color:var(--brand-strong);border-bottom:1px solid #FFD9B0;padding:6px 28px;font-size:12.5px;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--ink);font:600 13.5px var(--font);cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{border-color:#c5cdd6;background:#fbfcfd}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--ink)}.btn.primary:hover{background:#f07c00}.btn.dark{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.danger{color:var(--danger);border-color:#f1c6c2}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:#0715230d}.btn.sm{height:30px;padding:0 10px;font-size:12.5px}.btn.lg{height:44px;padding:0 20px;font-size:15px}.btn.icon{width:34px;padding:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:18px 20px}.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border)}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.muted{color:var(--muted)}.small{font-size:12.5px}.tiny{font-size:11.5px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;background:#eef1f4;color:var(--muted);white-space:nowrap}.badge.brand{background:var(--brand-soft);color:var(--brand-strong)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.dark{background:var(--ink);color:#fff}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-weight:600;font-size:12.5px}.field small{color:var(--muted);font-size:11.5px}.field.err input,.field.err textarea,.field.err select{border-color:var(--danger)}.field .errmsg{color:var(--danger);font-size:12px}input,textarea,select{font:14px var(--font);color:var(--ink);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;width:100%}textarea{resize:vertical;min-height:70px;line-height:1.45}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:var(--focus)}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brand-strong)}input[type=range]{padding:0;accent-color:var(--brand)}label.check{display:flex;align-items:center;gap:8px;font-weight:500}.alert{display:flex;gap:10px;padding:11px 14px;border-radius:var(--radius-sm);border:1px solid;font-size:13px;align-items:flex-start}.alert svg{flex:none;margin-top:2px}.alert.info{background:var(--info-soft);border-color:#d2dde8}.alert.warn{background:var(--warn-soft);border-color:#f4dfae;color:#5a3700}.alert.danger{background:var(--danger-soft);border-color:#f3c9c5;color:#7a1a14}.alert.ok{background:var(--ok-soft);border-color:#c3e3d1;color:#14532f}.alert.brand{background:var(--brand-soft);border-color:#ffd9b0;color:#6b2b00}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:9px 12px;border-bottom:1px solid var(--border);background:#fafbfc}.tbl td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}.tbl tr:last-child td{border-bottom:none}.tbl-wrap{overflow-x:auto}.spinner{width:18px;height:18px;border:2.5px solid #E2E7EC;border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex:none}.spinner.lg{width:30px;height:30px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.center{display:grid;place-items:center;padding:48px 16px;text-align:center}.empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 20px;text-align:center;color:var(--muted)}.empty .ill{width:56px;height:56px;border-radius:14px;background:var(--brand-soft);color:var(--brand-strong);display:grid;place-items:center}.empty h3{color:var(--ink)}.skeleton{background:linear-gradient(90deg,#eef1f4 25%,#f6f8fa 37%,#eef1f4 63%);background-size:400% 100%;animation:sk 1.4s ease infinite;border-radius:6px}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}.progress{height:8px;background:#eef1f4;border-radius:99px;overflow:hidden}.progress>div{height:100%;background:var(--brand);border-radius:99px;transition:width .4s ease}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#07152373;display:grid;place-items:center;z-index:100;padding:16px}.modal{background:#fff;border-radius:14px;box-shadow:var(--shadow-lg);width:min(560px,100%);max-height:90vh;overflow:auto}.modal.wide{width:min(900px,100%)}.modal header{padding:18px 22px 0;display:flex;justify-content:space-between;align-items:center}.modal .body{padding:14px 22px}.modal footer{padding:12px 22px 18px;display:flex;justify-content:flex-end;gap:8px}.toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--ink);color:#fff;padding:10px 14px;border-radius:9px;box-shadow:var(--shadow-lg);font-size:13px;max-width:380px;display:flex;gap:8px;align-items:flex-start}.toast.error{background:var(--danger)}.kpi{padding:16px 18px}.kpi .v{font-size:26px;font-weight:700;letter-spacing:-.02em}.kpi .l{color:var(--muted);font-size:12.5px}.credit-pill{display:flex;align-items:center;gap:10px;background:var(--brand-soft);border:1px solid #FFD9B0;border-radius:999px;padding:5px 6px 5px 12px;font-size:12.5px}.credit-pill b{font-size:14px}.credit-pill .sep{width:1px;height:16px;background:#ffd0a0}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:18px;overflow-x:auto}.tabs button{background:none;border:none;padding:10px 14px;font:600 13.5px var(--font);color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs button.on{color:var(--ink);border-bottom-color:var(--brand)}.tabs.small button{padding:9px 8px;font-size:12.5px}.auth{min-height:100%;display:grid;grid-template-columns:1fr 1fr}.auth-side{background:var(--nav);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-side:after{content:"";position:absolute;right:-120px;bottom:-120px;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,#ff850059,#ff850000 70%)}.auth-side h2{font-size:30px;line-height:1.15;max-width:420px}.auth-side p{color:var(--nav-muted);max-width:400px}.auth-form{display:grid;place-items:center;padding:32px 16px}.auth-form .card{width:min(400px,100%);padding:28px}.books{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.book{display:flex;flex-direction:column;text-decoration:none;color:inherit;overflow:hidden;transition:box-shadow .15s,transform .15s}.book:hover{box-shadow:var(--shadow-lg);transform:translateY(-1px)}.book .spine{height:6px;background:var(--brand)}.book .spine.ok{background:var(--ok)}.book .spine.neutral{background:#c5cdd6}.book .spine.danger{background:var(--danger)}.book .spine.warn{background:#e8a33c}.book .b{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}.book h3{font-size:15.5px}.book .meta{font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap}.stepper{display:flex;gap:0;background:var(--surface);border-bottom:1px solid var(--border);padding:0 20px;overflow-x:auto}.stepper>a,.stepper>span:not(.arrow){display:flex;align-items:center;gap:8px;padding:12px 14px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}.stepper .n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;background:#eef1f4;color:var(--muted)}.stepper .done .n{background:var(--ink);color:#fff}.stepper .cur{color:var(--ink);border-bottom-color:var(--brand)}.stepper .cur .n{background:var(--brand);color:var(--ink)}.stepper .locked{opacity:.5;cursor:not-allowed}.stepper>.arrow{color:#c5cdd6;padding:0 2px;display:flex;align-items:center}.step-body{padding:24px 28px 48px;max-width:1180px}.summary-box{background:var(--brand-soft);border:1px solid #FFD9B0;border-radius:var(--radius);padding:16px 18px}.summary-box ul{margin:6px 0 0;padding-left:18px}.list-plain{list-style:none;margin:0;padding:0}.list-plain li{padding:8px 0;border-bottom:1px solid var(--border)}.list-plain li:last-child{border-bottom:none}.toc-edit .ch{margin-bottom:14px}.toc-edit .ch-h{display:flex;gap:8px;align-items:center;margin-bottom:6px}.toc-edit ol{margin:0;padding-left:22px;columns:2;column-gap:28px}.toc-edit li{break-inside:avoid;padding:2px 0;font-size:13px}.swatch{width:18px;height:18px;border-radius:5px;display:inline-block;border:1px solid rgba(0,0,0,.1);vertical-align:middle}.steps-log{font-size:12.5px;max-height:360px;overflow:auto}.steps-log li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px dashed var(--border)}.dot{width:8px;height:8px;border-radius:50%;background:#c5cdd6;flex:none}.dot.done{background:var(--ok)}.dot.running{background:var(--brand);box-shadow:0 0 0 3px #ff850040}.dot.failed{background:var(--danger)}.dot.pending{background:#d5dbe1}.editor{display:grid;grid-template-columns:var(--left, 270px) minmax(0,1fr) var(--right, 410px);height:calc(100vh - 112px);min-height:520px}.editor.left-closed{--left: 0px}.editor.right-closed{--right: 0px}.pane{background:var(--surface);overflow:hidden;display:flex;flex-direction:column;min-width:0}.pane.left{border-right:1px solid var(--border)}.pane.right{border-left:1px solid var(--border)}.pane-h{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);min-height:48px}.pane-b{overflow:auto;flex:1}.center-pane{background:#e9ecef;display:flex;flex-direction:column;min-width:0}.center-pane .toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.center-pane iframe{flex:1;width:100%;border:0;background:#e9ecef}.tree .ch{padding:10px 12px 4px;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;display:flex;justify-content:space-between}.tree button.it{display:flex;width:100%;text-align:left;gap:8px;align-items:center;padding:6px 12px 6px 14px;background:none;border:none;border-left:3px solid transparent;font:13px var(--font);color:var(--ink);cursor:pointer}.tree button.it:hover{background:#f4f6f8}.tree button.it.sel{background:var(--brand-soft);border-left-color:var(--brand)}.tree .it .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree .flag{width:7px;height:7px;border-radius:50%;flex:none}.form-sec{padding:14px 14px 4px;border-bottom:1px solid var(--border)}.form-sec h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}.ing-row{display:grid;grid-template-columns:58px 74px 1fr 28px;gap:5px;margin-bottom:5px}.ing-row input{padding:6px 7px;font-size:13px}.step-row{display:grid;grid-template-columns:22px 1fr 28px;gap:6px;margin-bottom:6px;align-items:start}.step-row .n{font-weight:700;color:var(--brand-strong);padding-top:7px;font-size:12.5px;text-align:right}.step-row textarea{min-height:48px;font-size:13px;padding:6px 8px}.savestate{font-size:12px;display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.savestate.err{color:var(--danger)}.issue{padding:10px 12px;border-bottom:1px solid var(--border);font-size:12.5px;display:flex;gap:8px;cursor:pointer}.issue:hover{background:#f7f8fa}.issue .sev{width:4px;border-radius:4px;flex:none}.sev.blocking{background:var(--danger)}.sev.warning{background:#e8a33c}.sev.info{background:#9aa8b6}.thumb{width:100%;aspect-ratio:4/3;object-fit:contain;background:#f3f1ec;border-radius:6px;border:1px solid var(--border)}.crop-box{position:relative;border-radius:6px;overflow:hidden;border:1px solid var(--border);background:#f3f1ec;cursor:crosshair}.crop-box img{display:block;width:100%;height:100%}.crop-dot{position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid #fff;background:var(--brand);transform:translate(-50%,-50%);box-shadow:0 0 0 2px #07152366;pointer-events:none}.diff{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12.5px}.diff .col{background:#fafbfc;border:1px solid var(--border);border-radius:8px;padding:10px}.diff ins{background:#ddf3e5;text-decoration:none}.diff del{background:#fbe2df}.cover-frame{width:100%;aspect-ratio:17.3 / 11.25;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden}.cover-frame iframe{width:100%;height:100%;border:0}.dl-file{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:9px;background:#fff}.dl-file .ic{width:38px;height:38px;border-radius:8px;background:var(--brand-soft);color:var(--brand-strong);display:grid;place-items:center;flex:none}.dl-file .t{flex:1;min-width:0}.dl-file .t b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1100px){.editor{grid-template-columns:var(--left, 240px) minmax(0,1fr) var(--right, 330px)}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:860px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:10px;gap:6px}.sidebar .nav{flex-direction:row;flex-wrap:wrap}.sidebar .spacer,.sidebar .nav-section{display:none}.content,.step-body{padding:16px}.topbar{padding:12px 16px;flex-wrap:wrap}.g2,.g3,.g4,.auth{grid-template-columns:1fr}.auth-side{display:none}.editor{grid-template-columns:1fr;height:auto}.pane.left,.pane.right{max-height:420px}.center-pane iframe{min-height:560px}}
