@font-face{font-family:Fira Code;src:url(/assets/FiraCode-Regular-jAL9VymT.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg: #fcfcfc;--surface: #ffffff;--surface-2: #f4f6f8;--border: #dddddd;--border-strong: #cccccc;--text: #333333;--text-dim: #6b7280;--text-faint: #9aa1ab;--accent: #1e90ff;--accent-hover: #0d7ff0;--accent-dark: #0061c3;--accent-light: #6ebbff;--accent-soft: rgba(30, 144, 255, .12);--success: #2e9e5b;--warning: #e0a020;--danger: #d32f2f;--danger-soft: rgba(211, 47, 47, .1);--status-actionable: #d83a3a;--status-waiting: #e0a020;--status-done: #2e9e5b;--status-none: #9aa1ab;--r-sm: 6px;--r: 8px;--r-lg: 10px;--r-pill: 999px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .06);--shadow-2: 0 10px 30px rgba(0, 0, 0, .14);--ring: 0 0 0 3px var(--accent-soft);--t-fast: .11s cubic-bezier(.4, 0, .2, 1);--t: .18s cubic-bezier(.4, 0, .2, 1);--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 22px;--font: "Fira Code", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-base);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{scrollbar-width:thin;scrollbar-color:#cdd2da transparent}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-thumb{background:#cdd2da;border-radius:var(--r-pill);border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#b6bcc7;background-clip:padding-box}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid var(--border);background:var(--surface)}.brand{font-size:var(--fs-lg);font-weight:600;margin:0;letter-spacing:-.01em}.nav{display:flex;gap:8px}.nav-btn{padding:7px 16px;font-size:var(--fs-sm);font-weight:500;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-family:inherit;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.nav-btn:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-2)}.nav-btn.active{background:var(--accent);color:#fff;border-color:transparent}.content{flex:1;min-height:0;overflow:hidden;padding:20px}.banner{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:9px 15px;border-radius:var(--r-sm);font-size:var(--fs-sm)}.banner.error{background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger)}.banner button{background:none;border:none;color:inherit;cursor:pointer;font-size:var(--fs-md)}.center-state{display:grid;place-items:center;height:100%;color:var(--text-faint);gap:12px}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.empty{color:var(--text-faint);font-size:var(--fs-sm);text-align:center;padding:18px 12px}.btn{padding:8px 15px;font-size:var(--fs-sm);font-weight:500;border-radius:var(--r-sm);border:1px solid transparent;background:var(--accent);color:#fff;cursor:pointer;font-family:inherit;transition:background var(--t-fast),transform var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.btn:hover{background:var(--accent-hover)}.btn:active{transform:translateY(1px)}.btn.ghost{background:var(--surface);border-color:var(--border);color:var(--text-dim)}.btn.ghost:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-2)}.btn.danger{background:var(--surface);border-color:var(--danger);color:var(--danger)}.btn.danger:hover{background:var(--danger-soft)}.btn-sm{padding:4px 10px;font-size:var(--fs-xs)}.btn:focus-visible,.nav-btn:focus-visible{outline:none;box-shadow:var(--ring)}.field{width:100%;padding:8px 11px;font-size:var(--fs-sm);font-family:inherit;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.field::placeholder{color:var(--text-faint)}.field:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.add-row{display:flex;gap:8px;margin-top:12px}.add-row .field{flex:1}.dashboard{display:grid;grid-template-columns:minmax(300px,360px) 1fr;gap:18px;height:100%;min-height:0}.mission-rail{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-1);padding:18px;overflow:auto;display:flex;flex-direction:column;gap:9px}.panel-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:8px 0 2px}.main-mission-box{padding:12px 14px;border-radius:var(--r-sm);text-align:center;font-weight:600;font-size:var(--fs-md);background:var(--accent);color:#fff;min-height:44px;display:grid;place-items:center}.main-mission-box.empty-state{background:var(--surface-2);color:var(--text-faint);border:1px dashed var(--border-strong);font-weight:500}.mission-row{display:flex;align-items:center;gap:9px;padding:8px;border-radius:var(--r-sm);transition:background var(--t-fast)}.mission-row:hover{background:var(--surface-2)}.mission-row .star{cursor:pointer;color:var(--text-faint);transition:color var(--t-fast)}.mission-row .star.on,.mission-row .star:hover{color:var(--accent)}.mission-row .title{flex:1;cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mission-row .row-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--t-fast)}.mission-row:hover .row-actions{opacity:1}.detail-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.detail-head h2{font-size:var(--fs-md);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.divider{height:1px;background:var(--border);margin:10px 0;border:0}.subtask-row{display:flex;align-items:center;gap:9px;padding:5px 6px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast);position:relative}.subtask-row:hover{background:var(--surface-2)}.subtask-dot{font-weight:700;flex-shrink:0;line-height:1}.subtask-caret{width:13px;flex-shrink:0;font-size:9px;color:var(--text-faint);cursor:pointer}.subtask-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subtask-title.done{text-decoration:line-through;opacity:.55}.child-counts{display:inline-flex;gap:8px;margin-left:8px;font-size:var(--fs-xs);font-weight:600;vertical-align:middle}.subtask-edit{display:flex;gap:7px;align-items:center;padding:4px 0}.kebab{margin-left:auto;flex-shrink:0;padding:0 8px;font-size:var(--fs-lg);line-height:1;font-weight:700;background:transparent;color:var(--text-dim);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;opacity:0;transition:opacity var(--t-fast),background var(--t-fast)}.subtask-row:hover .kebab,.kebab.open{opacity:1}.kebab.open{background:var(--accent);color:#fff;border-color:transparent}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.menu{position:absolute;right:0;top:100%;margin-top:5px;min-width:196px;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-2);overflow:hidden;padding:5px 0}.menu-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 13px;font-size:var(--fs-sm);background:transparent;border:none;color:var(--text);cursor:pointer;font-family:inherit;transition:background var(--t-fast)}.menu-item:hover{background:var(--surface-2)}.menu-item.danger{color:var(--danger)}.menu-sep{height:1px;background:var(--border);margin:5px 0}.menu-label{padding:6px 13px 2px;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.menu-confirm{padding:10px 13px;display:flex;flex-direction:column;gap:9px}.menu-confirm .row{display:flex;gap:7px}.week-area{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden;display:flex;min-height:0}.week-grid{flex:1;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;min-height:0}.day-card{display:flex;flex-direction:column;min-width:0;min-height:0;padding:14px 16px;background:transparent;border-right:1px solid var(--border);border-bottom:1px solid var(--border);transition:background var(--t-fast)}.day-card:nth-child(4n){border-right:none}.day-card:nth-last-child(-n+4){border-bottom:none}.day-card.today{background:var(--accent-soft)}.day-card h3{margin:0 0 8px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-dim)}.day-card.today h3{color:var(--accent-dark)}.note-box{flex:1;width:100%;min-height:0;resize:none;overflow-y:auto;font-size:var(--fs-sm);line-height:1.55;padding:0;white-space:pre-wrap;word-break:break-word;border:none;outline:none;background:transparent;color:var(--text);font-family:inherit;cursor:text}.note-box.placeholder{color:var(--text-faint)}.note-link{color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.note-link.anchor{text-decoration:underline dotted}.note-link.create{color:var(--text-dim);text-decoration:underline dashed}.pages{display:grid;grid-template-columns:280px 1fr;gap:18px;height:100%;min-height:0}.pages-sidebar{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-1);padding:14px;overflow:auto}.pages-sidebar .head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.page-item{display:flex;align-items:center;gap:7px;padding:9px 11px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast)}.page-item:hover{background:var(--surface-2)}.page-item.active{background:var(--accent);color:#fff}.page-item .count{font-size:var(--fs-xs);opacity:.7;border:1px solid currentColor;border-radius:var(--r-pill);padding:0 6px}.page-item .del{margin-left:auto;opacity:0;background:none;border:none;color:inherit;cursor:pointer;padding:0 4px}.page-item:hover .del{opacity:.55}.page-editor{display:flex;flex-direction:column;gap:12px;min-height:0;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-1);padding:20px 24px}.breadcrumbs{display:flex;gap:5px;flex-wrap:wrap;font-size:var(--fs-sm);align-items:center}.crumb{color:var(--accent);cursor:pointer;text-decoration:underline}.crumb.current{color:var(--text-dim);text-decoration:none;font-weight:600}.page-title{font-size:var(--fs-xl);font-weight:600;background:transparent;border:none;color:var(--text);outline:none;font-family:inherit;letter-spacing:-.01em}.meta-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--text-faint);border-bottom:1px solid var(--border);padding-bottom:10px}.save-status{margin-left:auto;font-weight:500}.chapter-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.chapter-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface-2);cursor:pointer;font-size:var(--fs-sm);transition:border-color var(--t-fast)}.chapter-chip:hover{border-color:var(--accent)}.page-body{flex:1;resize:none;font-size:var(--fs-md);line-height:1.75;padding:4px 0;border:none;outline:none;background:transparent;color:var(--text);font-family:inherit}.page-body-view{white-space:pre-wrap;word-break:break-word;overflow-y:auto;cursor:text}.page-body-view .placeholder{color:var(--text-faint)}.anchor-tag{color:var(--accent);font-weight:600;border-radius:3px;padding:0 1px}.anchor-flash{animation:anchorFlash 1.4s ease}@keyframes anchorFlash{0%,to{background:transparent;box-shadow:none}12%{background:var(--accent-soft);box-shadow:0 0 0 4px var(--accent-soft)}}.launch{height:100%;overflow:auto}.launch h2{margin:0 0 16px;font-size:var(--fs-xl)}.launch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.launch-card{border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;cursor:pointer;background:var(--surface);transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.launch-card:hover{border-color:var(--accent);box-shadow:var(--shadow-1);transform:translateY(-1px)}.launch-card .t{font-weight:600;font-size:var(--fs-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.launch-card .m{font-size:var(--fs-xs);color:var(--text-faint);margin-top:7px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#282c3459;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:1000;animation:fade var(--t) both}.modal{width:400px;max-height:72vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-2);overflow:hidden}.modal-head{display:flex;align-items:center;gap:9px;padding:13px 15px;border-bottom:1px solid var(--border)}.modal-head .title{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-head .x{background:none;border:none;color:var(--text-dim);font-size:var(--fs-lg);cursor:pointer}.modal-list{flex:1;overflow:auto}.modal-row{display:flex;align-items:center;gap:9px;padding:10px 15px;cursor:pointer;transition:background var(--t-fast)}.modal-row:hover{background:var(--surface-2)}.modal-row.sel{background:var(--accent);color:#fff}.modal-row.danger{color:var(--danger)}.modal-foot{padding:12px 15px;border-top:1px solid var(--border);color:var(--accent);font-weight:500;cursor:pointer;background:var(--surface-2)}.theme-pop{position:absolute;top:54px;right:16px;z-index:1200;width:268px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-2);padding:14px;animation:fade var(--t) both}.theme-pop h4{margin:0 0 10px;font-size:var(--fs-sm);font-weight:600}.theme-field{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:var(--fs-sm);color:var(--text-dim)}.theme-field input[type=color]{width:38px;height:26px;padding:0;border:1px solid var(--border);border-radius:var(--r-sm);background:none;cursor:pointer}.theme-swatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.swatch{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2px solid var(--border);position:relative;transition:transform var(--t-fast)}.swatch:hover{transform:scale(1.12)}.swatch.active{border-color:var(--text)}.theme-hint{margin-top:12px;font-size:var(--fs-xs);color:var(--text-faint);line-height:1.5}.theme-hint kbd{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-family:inherit;font-size:.92em}.lock-screen{height:100%;display:grid;place-items:center;padding:20px}.lock-card{width:360px;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);padding:28px 26px;text-align:center}.lock-mark{font-size:34px;line-height:1}.lock-brand{font-size:var(--fs-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-top:10px}.lock-title{font-size:var(--fs-xl);font-weight:600;margin:4px 0 8px}.lock-sub{font-size:var(--fs-sm);color:var(--text-dim);margin:0 0 18px;line-height:1.55}.lock-card .field{margin-bottom:10px}.lock-error{color:var(--danger);font-size:var(--fs-sm);margin:2px 0 10px}.lock-submit{width:100%;padding:10px;margin-top:4px}.lock-submit:disabled{opacity:.6;cursor:default}.lock-reset{margin-top:16px;font-size:var(--fs-sm)}.link-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;font-family:inherit;font-size:var(--fs-sm);text-decoration:underline}.link-btn:hover{color:var(--text)}.reset-confirm{color:var(--text-dim);display:flex;flex-direction:column;gap:10px}.reset-confirm .row{display:flex;gap:8px;justify-content:center}.product-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px}.img-placeholder{display:grid;place-items:center;width:100%;background:var(--surface-2);border:1px dashed var(--border-strong);border-radius:var(--r-sm);color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;font-size:var(--fs-sm)}.topbar{position:relative}.topbar-left{display:flex;align-items:center;gap:18px;min-width:0}.menu-toggle{display:none;font-size:var(--fs-lg);line-height:1;padding:5px 11px}.menu-cats{display:none;padding-left:8px}.menu-cats .page-item.active{background:var(--accent-soft);color:var(--text)}@media(max-width:768px){.topbar{flex-wrap:wrap;gap:8px;padding:10px 14px}.nav{flex-wrap:wrap}.brand{font-size:var(--fs-md)}.nav-btn{padding:6px 11px}.content{padding:12px}.menu-toggle{display:inline-block}.topbar-tabs{display:flex;flex-direction:column;align-items:stretch;gap:4px;position:absolute;top:100%;left:0;z-index:100;width:min(280px,82vw);max-height:85vh;overflow-y:auto;background:var(--surface);box-shadow:var(--shadow-2);opacity:0;padding:0 14px;border-right:0 solid var(--border);border-bottom:0 solid var(--border);transform:translate(-100%);pointer-events:none;transition:transform var(--t),opacity var(--t-fast),padding var(--t)}.topbar-tabs.open{opacity:1;padding:10px 14px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);transform:translate(0);pointer-events:auto}.topbar-tabs .nav-btn{text-align:left}.menu-cats{display:block}.pages-sidebar{display:none}.pages,.dashboard{grid-template-columns:1fr;gap:12px}.product-detail-grid{grid-template-columns:1fr;gap:18px}.page-editor{padding:16px}.launch-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
