:root{--paper: #f5f5f0;--ink: #101c29;--sage: #e8ebdf;--doyang: #648925;--doyang-deep: #4f6f1e;--mark-bar: #d5ef78;--bg: var(--paper);--surface: #ffffff;--muted: #66717b;--line: #d9ddd8;--accent: var(--doyang);--accent-ink: #ffffff;--soft: var(--sage);--secondary: var(--doyang-deep);--btn: var(--ink);--btn-text: #ffffff;--corner-red: #ff8c82;--corner-blue: #86c3ff;--danger: #b42318;--warn: #b45309;--ok: var(--doyang);--radius: 8px;--sidebar-width: 248px;--font: "Manrope", "Segoe UI", sans-serif;--font-display: "Sora", "Manrope", sans-serif;--shadow: 0 1px 2px rgb(16 28 41 / .06)}[data-theme=dark]{--bg: #14212d;--surface: #1e2d3a;--ink: #f4f6f3;--muted: #9aa8b0;--line: #2a3c4a;--accent: #8fae4a;--accent-ink: #14212d;--soft: #182632;--secondary: #a3c15e;--btn: #8fae4a;--btn-text: #14212d;--corner-red: #ff8c82;--corner-blue: #86c3ff;--danger: #ff8c82;--warn: #e8b86d;--ok: #8fae4a;--shadow: 0 1px 2px rgb(0 0 0 / .3)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg)}h1,h2,h3,.brand-title,.page-title{font-family:var(--font-display);letter-spacing:-.02em}a{color:var(--secondary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}.app-frame{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}.sidebar{display:flex;flex-direction:column;gap:8px;padding:20px 14px;background:var(--surface);border-right:1px solid var(--line);position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px;color:var(--ink);text-decoration:none}.brand:hover{text-decoration:none}.brand-mark{--brand-mark-bg: #101c29;--brand-mark-bar: var(--mark-bar);width:34px;height:34px;display:grid;grid-template-columns:repeat(3,6px);gap:4px;align-content:center;justify-content:center;background:var(--brand-mark-bg);border-radius:5px;flex-shrink:0}.brand-mark i{display:block;height:18px;background:var(--brand-mark-bar);transform:skewY(-25deg)}.brand-mark i:nth-child(2){height:24px;margin-top:-3px}.brand-title{font-weight:700;font-size:1.05rem}.nav{display:flex;flex-direction:column;gap:4px;flex:1}.nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);color:var(--muted);text-decoration:none;border:1px solid transparent}.nav-link:hover{background:var(--soft);color:var(--ink);text-decoration:none}.nav-link.active{background:var(--accent);color:var(--accent-ink);font-weight:600}.nav-ico{width:6px;height:6px;border-radius:1px;background:currentColor;opacity:.4;flex-shrink:0}.nav-link.active .nav-ico{opacity:1;background:var(--accent-ink)}.sidebar-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.sidebar-meta{font-size:.8rem;color:var(--muted);padding:0 8px;line-height:1.4}.sidebar-user{color:var(--ink);font-weight:650;font-size:.84rem}.sidebar-hint{margin-top:2px}.sidebar-controls{display:grid;grid-template-columns:72px 1fr;gap:8px;align-items:stretch}.live-status-bar{display:flex;flex-direction:column;gap:6px;padding:0 4px}.live-pill{display:inline-flex;align-items:center;font-size:.72rem;font-weight:650;padding:5px 8px;border-radius:4px;border:1px solid var(--line);color:var(--muted);background:var(--soft)}.live-pill.ok{color:var(--ink);border-color:color-mix(in srgb,var(--ok) 45%,var(--line));background:color-mix(in srgb,var(--ok) 14%,var(--surface))}.live-pill.warn{color:var(--warn)}.live-pill.soft{border-style:dashed}.btn-sidebar{width:100%;padding:8px 10px;font-size:.84rem}.form-select-compact .form-select-trigger{padding:8px 10px;font-size:.84rem;font-weight:650}.main-area{min-width:0;padding:20px 24px 40px;position:relative;z-index:1}.mobile-topbar,.sidebar-backdrop{display:none}body.nav-lock{overflow:hidden}.topbar-mini{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-bottom:16px}.muted{color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}.panel h1,.panel h2,.panel h3{margin:0 0 12px;color:var(--ink)}.page-title{margin:0;font-size:1.6rem;font-weight:700}.page-sub{margin:4px 0 0;color:var(--muted);font-size:.92rem}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}@media(max-width:900px){.app-frame{display:block;min-height:100vh}.mobile-topbar{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.btn-menu{flex-shrink:0;padding:8px 12px;font-size:.84rem}.brand-compact{padding:0;min-width:0}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#101c2959}.app-frame.nav-open .sidebar-backdrop{display:block}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(var(--sidebar-width),86vw);height:100vh;height:100dvh;z-index:50;border-right:1px solid var(--line);border-bottom:none;transform:translate(-105%);transition:transform .18s ease;overflow:auto}.app-frame.nav-open .sidebar{transform:translate(0);box-shadow:8px 0 24px #101c292e}.main-area{padding:16px 14px 32px;width:100%}.grid-2,.grid-3{grid-template-columns:1fr}}@media(min-width:901px){.mobile-topbar,.sidebar-backdrop{display:none!important}}.form-select{position:relative;width:100%}.form-select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:9px 11px;cursor:pointer;font:inherit;text-align:left}.form-select-trigger:hover{background:color-mix(in srgb,var(--soft) 55%,var(--surface))}.form-select.open .form-select-trigger,.form-select-trigger:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 70%,transparent);outline-offset:1px}.form-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-weight:500}.form-select-chevron{flex-shrink:0;width:8px;height:8px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(45deg);margin-top:-3px}.form-select.open .form-select-chevron{transform:rotate(-135deg);margin-top:3px}.form-select-menu{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);margin:0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);max-height:260px;overflow:auto}.form-select-up .form-select-menu{top:auto;bottom:calc(100% + 4px)}.form-select-option{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink);text-align:left;padding:8px 10px;border-radius:4px;cursor:pointer;font:inherit;font-weight:500}.form-select-option:hover{background:var(--soft)}.form-select-option.on{background:color-mix(in srgb,var(--accent) 16%,var(--surface));font-weight:650}.meta-list{margin:0;padding:0;border-top:1px solid var(--line)}.meta-row{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:8px 16px;padding:8px 0;border-bottom:1px solid var(--line)}.meta-row dt{margin:0;color:var(--muted);font-size:.84rem;font-weight:650}.meta-row dd{margin:0;color:var(--ink);font-size:.92rem}.tour-detail{padding:12px 16px 16px;background:var(--soft);border-top:1px solid var(--line)}button.linkish{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:650;padding:0;cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-underline-offset:3px}button.linkish:hover{color:var(--secondary)}label.field{display:flex;flex-direction:column;gap:4px;font-size:.88rem;color:var(--muted);min-width:140px;flex:1}label.field input,label.field select,label.field textarea{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:9px 11px}label.field input:focus,label.field select:focus,label.field textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 70%,transparent);outline-offset:1px}label.check{display:flex;align-items:center;gap:8px;color:var(--ink);min-width:auto}.btn,a.btn,button.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:8px 14px;cursor:pointer;font-weight:600;text-decoration:none}.btn:hover,.btn:focus,.btn:focus-visible,a.btn:hover,a.btn:focus,a.btn:focus-visible,button.btn:hover,button.btn:focus,button.btn:focus-visible{background:var(--soft);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--btn);border-color:var(--btn);color:var(--btn-text)}.btn-primary:hover{filter:brightness(1.05);background:var(--btn)}.btn-accent{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-danger{background:transparent;border-color:color-mix(in srgb,var(--danger) 45%,var(--line));color:var(--danger)}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.tab{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:7px 12px;cursor:pointer;color:var(--muted);font-weight:600}.tab.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}table.data{width:100%;border-collapse:collapse;font-size:.92rem}table.data th,table.data td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data th{color:var(--muted);font-weight:650;background:var(--soft);white-space:nowrap}table.data tbody tr:hover{background:color-mix(in srgb,var(--soft) 65%,transparent)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:6px;font-size:.78rem;font-weight:650;border:1px solid var(--line)}.badge.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,var(--surface));border-color:color-mix(in srgb,var(--ok) 32%,var(--line))}.badge.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-color:color-mix(in srgb,var(--warn) 30%,var(--line))}.badge.error{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}.badge.muted{color:var(--muted);background:var(--soft)}.corner-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.corner-dot.red{background:var(--corner-red)}.corner-dot.blue{background:var(--corner-blue)}.counters{display:flex;gap:10px;flex-wrap:wrap}.counter{min-width:120px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft)}.counter .n{font-family:var(--font-display);font-size:1.35rem;font-weight:700;color:var(--ink)}.error-box,.success-box{border-radius:6px;padding:10px 12px;margin-bottom:12px;border:1px solid}.error-box{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}.success-box{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--surface));border-color:color-mix(in srgb,var(--ok) 32%,var(--line))}.login-wrap{max-width:420px;margin:48px auto}.login-hero{margin-bottom:16px}.login-hero .eyebrow{color:var(--secondary);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.stack{display:flex;flex-direction:column;gap:12px}.section-note{font-size:.9rem;color:var(--muted);margin:-4px 0 12px}.split-lists{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:900px){.split-lists{grid-template-columns:1fr}}.loading-screen{min-height:100vh;display:grid;place-items:center;padding:24px;color:var(--muted);background:var(--bg)}.auth-only{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 12% 18%,color-mix(in srgb,var(--accent) 35%,transparent),transparent 42%),radial-gradient(circle at 88% 0%,color-mix(in srgb,var(--corner-blue) 22%,transparent),transparent 36%),var(--bg)}.auth-only .app-frame{display:block;min-height:auto;width:100%}.auth-links{display:flex;gap:12px;margin-top:8px}.toast-host{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:1200;width:min(560px,calc(100vw - 24px));display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border-radius:8px;border:1px solid;box-shadow:var(--shadow);background:var(--surface);animation:toast-in .18s ease-out}.toast-msg{margin:0;flex:1;min-width:0;font-size:.9rem;line-height:1.4;white-space:pre-wrap;word-break:break-word}.toast-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:inherit;opacity:.65;cursor:pointer;font-size:1.15rem;line-height:1;padding:0 2px;flex-shrink:0}.toast-dismiss:hover{opacity:1}.toast-error{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:color-mix(in srgb,var(--danger) 32%,var(--line))}.toast-ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--surface));border-color:color-mix(in srgb,var(--ok) 34%,var(--line))}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
