:root{--bg: #f6f8fc;--surface: #fff;--text: #0f172a;--muted: #5b6478;--border: #dde3ee;--primary: #5b43e8;--primary-weak: #eeebff;--accent2: #28c4db;--primary-grad: linear-gradient(135deg, #735df8, #bf65e7);--danger: #c4321c;--danger-weak: #fdecea;--warning: #9a5b00;--warning-weak: #fff4e0;--success: #12805c;--success-weak: #e1f5ee;--mock: #7a2fc2;--mock-weak: #f3e9fd;--radius: 12px;--gap: 16px;--grid-line: rgba(115, 93, 248, .07);--glow1: rgba(115, 93, 248, .18);--glow2: rgba(40, 196, 219, .18);--bg-grad: linear-gradient(160deg, #f6f8fc 0%, #efecff 55%, #e5f6fb 100%);--navy: #071225;--navy-2: #0b1930;--navy-line: #1a2d48;--navy-text: #b4c2d8;--code-bg: #0f172a;--code-fg: #c7d2fe;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg);line-height:1.55}:root[data-theme=dark]{--bg-grad: #081120;--bg: #081120;--surface: #131a2e;--text: #e6eaf5;--muted: #9aa5bf;--border: #26304a;--primary: #a89bff;--primary-weak: #231f4d;--accent2: #28c4db;--navy: #050b16;--navy-2: #08111f;--danger-weak: #3a1d1a;--warning-weak: #33270c;--success-weak: #0f2b25;--mock-weak: #2e1d42;--danger: #ef6b57;--warning: #fbbf24;--success: #34d399;--mock: #b98cf0;--grid-line: rgba(129, 140, 248, .08);--glow1: rgba(129, 140, 248, .22);--glow2: rgba(34, 211, 238, .14);--code-bg: #070b17;--code-fg: #c7d2fe;color-scheme:dark}*{box-sizing:border-box}body{margin:0}a{color:var(--primary)}h1{font-size:1.4rem;margin:0}h2{font-size:1.15rem;margin:0 0 8px}h3{font-size:1rem;margin:0 0 6px}code{font-family:ui-monospace,Menlo,Consolas,monospace;word-break:break-all}.muted{color:var(--muted)}.small{font-size:.85rem}.container{max-width:1100px;margin:0 auto;padding:16px}.stack>*+*{margin-top:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.end{justify-content:flex-end}.row.center{justify-content:center}.row.between{justify-content:space-between}.grid{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:7px 14px;font:inherit;cursor:pointer;min-height:36px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--primary-grad);border-color:transparent;color:#fff}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn--ghost{background:transparent}.btn--icon{border:none;background:none;font-size:1.3rem;padding:0 6px;min-height:0}.field{display:flex;flex-direction:column;gap:4px}.field>span{font-size:.9rem;color:var(--muted)}input,select,textarea{font:inherit;padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);width:100%}textarea{min-height:110px;resize:vertical}.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.8rem;white-space:nowrap;border:1px solid transparent}.tag--neutral{background:var(--bg);border-color:var(--border)}.tag--info{background:var(--primary-weak);color:var(--primary)}.tag--success{background:var(--success-weak);color:var(--success)}.tag--warning{background:var(--warning-weak);color:var(--warning)}.tag--danger{background:var(--danger-weak);color:var(--danger)}.tag--mock{background:var(--mock-weak);color:var(--mock);border-color:var(--mock);font-weight:600}.notice{border-radius:var(--radius);padding:10px 14px;border:1px solid var(--border);background:var(--surface)}.notice p{margin:0}.notice p+p{margin-top:4px}.notice--danger{background:var(--danger-weak);border-color:var(--danger)}.notice--warning{background:var(--warning-weak);border-color:var(--warning)}.notice--info{background:var(--primary-weak);border-color:var(--primary)}.notice--neutral{background:var(--bg)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:8px 0 16px;flex-wrap:wrap}.page-header__actions{display:flex;gap:8px;flex-wrap:wrap}.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-all}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.85rem;color:var(--muted);font-weight:500;white-space:nowrap}.empty{padding:32px;text-align:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:520px;max-height:90vh;overflow:auto}.modal__head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border)}.modal__head h2{margin:0}.modal__body{padding:16px}.modal__body>*+*{margin-top:12px}.modal__foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.shell-nav{background:var(--surface);border-bottom:1px solid var(--border)}.shell-nav .container{display:flex;align-items:center;gap:12px;padding-top:10px;padding-bottom:10px;flex-wrap:wrap}.shell-nav nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}.shell-nav nav a{text-decoration:none;color:var(--muted);padding:6px 12px;border-radius:10px}.shell-nav nav a.router-link-active{background:var(--primary-weak);color:var(--primary)}.brand{font-weight:700;margin-right:8px;text-decoration:none;color:var(--text)}.theme-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text);width:36px;height:36px;border-radius:10px;cursor:pointer;font-size:1rem;line-height:1}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.auth-box{max-width:400px;margin:48px auto}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;overflow-x:auto}.tabs a,.tabs button{padding:8px 12px;border:none;background:none;color:var(--text);text-decoration:none;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;font:inherit}.tabs .active,.tabs a.router-link-exact-active{border-bottom-color:var(--primary);color:var(--primary)}@media(max-width:600px){.container{padding:12px}.kv{grid-template-columns:1fr}.kv dd{margin-bottom:6px}.page-header{flex-direction:column}.btn{width:100%}.row .btn,.page-header__actions .btn{width:auto}}body{background:var(--bg-grad);background-attachment:fixed;min-height:100vh}.container{max-width:1180px}h1{font-size:1.6rem;letter-spacing:-.01em;text-wrap:balance}.page-header{margin:12px 0 20px}.page-header p{margin:4px 0 0}.shell-nav{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--surface) 78%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px)}.shell-nav nav a:hover{color:var(--text);background:var(--bg)}.shell-nav nav a.router-link-active{background:var(--primary-weak);color:var(--primary);font-weight:600}.brand:before{content:"";display:inline-block;width:28px;height:20px;background:url(/brand/mark.png) center / contain no-repeat;vertical-align:-4px;margin-right:8px}.auth-logo{display:block;height:48px;width:auto}.card{border-radius:16px;box-shadow:0 1px 2px #0f172a0a;transition:border-color .2s,box-shadow .2s}.grid>.card:hover{border-color:var(--primary);box-shadow:0 10px 28px -14px #4f46e559}.btn{transition:border-color .15s,filter .15s,box-shadow .15s}.btn:hover:not(:disabled){border-color:var(--primary)}.btn--primary{box-shadow:0 6px 18px -8px var(--primary)}.btn--primary:hover:not(:disabled){filter:brightness(1.06)}.btn--danger:hover:not(:disabled){filter:brightness(1.06)}input,select,textarea{border-radius:10px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-weak)}.table-wrap{border:1px solid var(--border);border-radius:16px;background:var(--surface)}.table-wrap table{background:transparent}th{text-transform:none;background:var(--bg)}tbody tr:hover td{background:color-mix(in srgb,var(--primary-weak) 45%,transparent)}tbody tr:last-child td{border-bottom:none}.notice{border-radius:12px}.modal{border-radius:20px;box-shadow:0 24px 60px -20px #0f172a80}.modal-backdrop{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.tabs{gap:6px;border-bottom:none;padding:3px;background:var(--border);border-radius:12px;width:fit-content;max-width:100%}.tabs a,.tabs button{border:none;border-radius:9px;color:var(--muted);padding:6px 16px}.tabs .active,.tabs a.router-link-exact-active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 4px #0000001f}.container:has(>.auth-box){position:relative}.container:has(>.auth-box):before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(45% 50% at 20% 15%,var(--glow1),transparent 70%),radial-gradient(40% 45% at 85% 25%,var(--glow2),transparent 70%);pointer-events:none}.auth-box{border-radius:24px;padding:28px;box-shadow:0 24px 60px -30px #4f46e573}.auth-box h1{font-size:1.4rem}.kv{gap:8px 20px}.empty{border:1px dashed var(--border);border-radius:16px}@media(prefers-reduced-motion:reduce){.card,.btn,input,select,textarea{transition:none}}.auth-box form>.btn--primary{width:100%}.app-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:20px;padding:20px 14px;background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-right:1px solid var(--border);overflow-y:auto}.side .brand{margin:0 8px;font-size:1.1rem}.side__nav{display:flex;flex-direction:column;gap:4px}.side__nav a{text-decoration:none;color:var(--muted);padding:9px 12px;border-radius:10px}.side__nav a:hover{color:var(--text);background:var(--bg)}.side__nav a.router-link-active{background:var(--primary-weak);color:var(--primary);font-weight:600}.side__foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;padding:0 8px}.side__foot a{color:var(--primary)}.side__user{word-break:break-all}.app-main{min-width:0;padding-top:8px}.app-main .container{margin:0;max-width:1100px;padding:24px 32px}@media(max-width:860px){.app-shell{grid-template-columns:minmax(0,1fr)}.side{position:sticky;top:0;z-index:10;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;border-right:none;border-bottom:1px solid var(--border);overflow:visible}.side .brand{margin:0}.side__nav{order:3;flex-direction:row;width:100%;overflow-x:auto}.side__nav a{white-space:nowrap;padding:6px 12px}.side__foot{margin:0 0 0 auto;flex-direction:row;align-items:center;flex-wrap:wrap;padding:0}.side__user{display:none}.app-main .container{padding:16px 12px}}.btn--primary{box-shadow:0 8px 22px -10px #735df8;font-weight:600}.btn--danger-outline{background:transparent;color:var(--danger);border-color:color-mix(in srgb,var(--danger) 55%,transparent)}.btn--danger-outline:hover:not(:disabled){background:var(--danger-weak);border-color:var(--danger)}.card{border-radius:18px;box-shadow:0 10px 32px -18px #1020332e}.grid>.card:hover{box-shadow:0 16px 36px -16px #735df866}.side{background:var(--navy);border-right:1px solid var(--navy-line);backdrop-filter:none;-webkit-backdrop-filter:none}.side .brand{color:#fff}.side__nav a{color:var(--navy-text);display:flex;align-items:center;gap:10px;font-weight:500}.side__nav a:hover{color:#fff;background:var(--navy-2)}.side__nav a.router-link-active{background:var(--primary-grad);color:#fff;box-shadow:0 8px 22px -10px #735df8}.side__nav .nav-ico{width:20px;text-align:center;opacity:.85;font-size:.9rem;font-style:normal}.side__nav .nav-badge{margin-left:auto;min-width:20px;padding:0 7px;line-height:20px;text-align:center;border-radius:999px;background:#223650;color:#e7eefb;font-size:.72rem;font-weight:600}.side__nav .nav-badge--warn{background:#ff9b31;color:#071225}.side__foot{border-top:1px solid var(--navy-line);padding-top:14px;color:var(--navy-text)}.side__foot a{color:#c4b9ff}.side__foot .muted{color:#8ea2bd}.side__foot .theme-toggle{background:var(--navy-2);border-color:var(--navy-line);color:#e7eefb}.side__foot .btn--ghost{color:#e7eefb;border-color:var(--navy-line)}.shell-nav nav a.router-link-active,.tabs a.router-link-exact-active{color:var(--primary)}.layout-two{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}.layout-two>.col{display:grid;gap:18px;min-width:0;align-content:start}.layout-two--order{grid-template-columns:minmax(0,1.4fr) minmax(0,.9fr)}.sticky-summary{position:sticky;top:16px}.summary-total{display:flex;justify-content:space-between;align-items:baseline;border-top:1px dashed var(--border);padding-top:14px}.summary-total b{font-size:1.8rem;letter-spacing:-.02em}.overview{margin-bottom:16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.overview a{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 16px;text-decoration:none;color:var(--text);box-shadow:0 10px 32px -22px #1020334d;min-width:0}.overview a:hover{border-color:var(--primary)}.overview .ov-ico{width:38px;height:38px;border-radius:12px;background:var(--primary-weak);color:var(--primary);display:grid;place-items:center;font-weight:700;flex:none}.overview .ov-body{min-width:0;flex:1}.overview .ov-body b{display:block}.overview .ov-body small{color:var(--muted);display:block}.overview .ov-go{color:var(--primary);font-weight:700;font-size:.85rem;white-space:nowrap}.overview a.ov-warn{background:var(--warning-weak);border-color:color-mix(in srgb,var(--warning) 55%,transparent)}.overview a.ov-warn .ov-ico{background:color-mix(in srgb,var(--warning) 25%,transparent);color:var(--warning)}.overview a.ov-warn .ov-go{color:var(--warning)}.action-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--border)}.action-row:first-of-type{border-top:0;padding-top:0}.action-row--block{padding-bottom:0;margin-bottom:-6px;border-top:1px solid var(--border);margin-top:4px}.action-row b{display:block}.action-row small{color:var(--muted);display:block;line-height:1.45}@media(max-width:860px){.layout-two,.layout-two--order{grid-template-columns:minmax(0,1fr)}.sticky-summary{position:static}}.m-top,.m-tabbar,.m-shade,.m-sheet{display:none}@media(max-width:860px){.side{display:none}.m-top{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;background:var(--navy);border-bottom:1px solid var(--navy-line);padding:10px max(14px,env(safe-area-inset-right,0px)) 10px max(14px,env(safe-area-inset-left,0px));padding-top:calc(10px + env(safe-area-inset-top,0px))}.m-top .brand{color:#fff;margin-right:auto;font-weight:800;text-decoration:none}.m-top .theme-toggle{background:var(--navy-2);border-color:var(--navy-line);color:#e7eefb;flex-shrink:0}.m-avatar{width:36px;height:36px;flex-shrink:0;border-radius:50%;border:0;background:var(--primary-grad);color:#fff;font:inherit;font-weight:700;cursor:pointer}.app-main{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}.m-tabbar{display:grid;grid-template-columns:repeat(var(--n, 5),minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--navy);border-top:1px solid var(--navy-line);padding:6px max(6px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px))}.m-tabbar a,.m-tabbar button{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 0;border:0;border-radius:10px;background:none;color:var(--navy-text);font:inherit;font-size:.72rem;text-decoration:none;cursor:pointer;min-height:44px}.m-tabbar i{font-style:normal;font-size:1.1rem;line-height:1.4}.m-tabbar a.router-link-active{color:#fff}.m-tabbar a.router-link-active i{color:#b7a9ff}.m-tabbar sup{position:absolute;top:0;left:calc(50% + 6px);min-width:16px;padding:0 5px;border-radius:999px;background:#223650;color:#e7eefb;font-size:.62rem;font-weight:700;line-height:16px;text-align:center}.m-tabbar sup.is-warn{background:#ff9b31;color:#071225}.m-shade{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#050b168c}.m-sheet{display:block;position:fixed;left:0;right:0;bottom:0;z-index:31;max-height:82vh;overflow-y:auto;background:var(--surface);color:var(--text);border-radius:22px 22px 0 0;padding:14px max(16px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));box-shadow:0 -18px 44px -14px #00000080}.m-sheet__head .btn{width:auto;flex-shrink:0}.m-sheet__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.m-group{margin-top:12px}.m-group h4{margin:0 0 6px;font-size:.78rem;color:var(--primary);letter-spacing:.04em}.m-chips{display:flex;flex-wrap:wrap;gap:8px}.m-chips a{padding:7px 14px;border-radius:12px;background:var(--bg);border:1px solid var(--border);color:var(--text);text-decoration:none;font-size:.9rem}.m-chips a.router-link-active{background:var(--primary-weak);color:var(--primary);border-color:transparent;font-weight:600}.m-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.m-grid a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 4px;border-radius:14px;background:var(--bg);color:var(--text);text-decoration:none;font-size:.85rem;text-align:center}.m-grid i{font-style:normal;color:var(--primary);font-size:1.1rem}.m-list{display:grid}.m-list a,.m-list button{display:block;width:100%;text-align:left;padding:12px 2px;border:0;border-top:1px solid var(--border);background:none;color:var(--text);font:inherit;text-decoration:none;cursor:pointer}.m-list .m-logout{color:var(--danger)}.app-main .container{padding:14px}}@media(max-width:700px){.table-wrap{border:0;background:none;overflow:visible;border-radius:0}table.is-stacked,table.is-stacked tbody,table.is-stacked tr,table.is-stacked td{display:block}table.is-stacked{background:none}table.is-stacked thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}table.is-stacked tr{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:6px 14px;margin-bottom:10px;box-shadow:0 10px 28px -20px #1020334d}table.is-stacked td{display:flex;gap:12px;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px dashed var(--border);text-align:right;min-width:0;overflow-wrap:anywhere}table.is-stacked td:last-child{border-bottom:0}table.is-stacked td:before{content:attr(data-label);flex:0 0 5.2em;color:var(--muted);font-size:.8rem;text-align:left;white-space:nowrap}table.is-stacked td[data-label=""]:before{display:none}table.is-stacked td[data-empty]{display:none}table.is-stacked td .btn,table.is-stacked td button,table.is-stacked td a.btn{width:auto;white-space:nowrap}table.is-stacked td[data-label=""]{gap:8px}table.is-stacked td[data-label=""]{justify-content:flex-end;flex-wrap:wrap}table.is-stacked tbody tr:hover td{background:none}table.is-stacked code,table.is-stacked .mono{font-size:.75rem;word-break:break-all}}
