:root{--bg:#f4f6f9;--surface:#fff;--surface-2:#f0f2f5;--text:#1a1f26;--muted:#667085;--border:#e3e7ec;--primary:#06c755;--primary-ink:#04a848;--primary-soft:#e6f8ec;--danger:#d92d20;--danger-soft:#fee4e2;--warn:#b54708;--warn-soft:#fef0c7;--info:#175cd3;--info-soft:#e0ecff;--radius:12px;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018281a;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang TC", "Noto Sans TC", "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1419;--surface:#171d24;--surface-2:#1f2730;--text:#e6e9ee;--muted:#98a2b3;--border:#2a3441;--primary-soft:#0f3a22;--danger-soft:#3b1512;--warn-soft:#3b2a0f;--info-soft:#11253f;--shadow:0 1px 2px #0006}}:root[data-theme=dark]{--bg:#0f1419;--surface:#171d24;--surface-2:#1f2730;--text:#e6e9ee;--muted:#98a2b3;--border:#2a3441;--primary-soft:#0f3a22;--danger-soft:#3b1512;--warn-soft:#3b2a0f;--info-soft:#11253f}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:var(--info)}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}code,.mono{font-family:var(--mono);font-size:13px}.muted{color:var(--muted)}.small{font-size:13px}.shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;width:220px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar .brand{align-items:center;gap:8px;padding:6px 10px 18px;font-size:16px;font-weight:700;display:flex}.sidebar .brand .dot{background:var(--primary);border-radius:50%;width:10px;height:10px}.sidebar a.nav{color:var(--text);border-radius:8px;padding:9px 12px;font-weight:500;text-decoration:none;display:block}.sidebar a.nav:hover{background:var(--surface-2)}.sidebar a.nav.active{background:var(--primary-soft);color:var(--primary-ink)}.sidebar .spacer{flex:1}.main{flex:1;width:100%;max-width:1200px;padding:28px 32px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.page-head p{color:var(--muted);margin:4px 0 0}@media (width<=760px){.shell{flex-direction:column}.sidebar{flex-flow:wrap;gap:2px;width:100%;height:auto;padding:10px 12px;position:static}.sidebar .brand{width:100%;padding:6px 8px}.sidebar .spacer,.sidebar .foot{display:none}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:16px}.card-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.stat .label{color:var(--muted);font-size:13px}.stat .value{margin-top:2px;font-size:28px;font-weight:700}label.field{margin-bottom:14px;display:block}label.field>span.lbl{margin-bottom:5px;font-size:13px;font-weight:600;display:block}label.field>span.help{color:var(--muted);margin-top:4px;font-size:12px;display:block}input[type=text],input[type=password],input[type=number],input[type=date],select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:8px;padding:9px 11px;font-size:14px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:#0000}textarea{resize:vertical;min-height:80px;font-family:var(--mono);font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row>*{flex:none}.row .grow{flex:200px}button,.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}button:hover{background:var(--surface-2)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover{background:var(--primary-ink)}button.danger{color:var(--danger);border-color:var(--danger-soft)}button.danger:hover{background:var(--danger-soft)}button.sm{padding:5px 10px;font-size:13px}.badge{border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;line-height:1.6;display:inline-block}.badge.ok{background:var(--primary-soft);color:var(--primary-ink)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.err{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.neutral{background:var(--surface-2);color:var(--muted)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px}th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:12px;font-weight:600}tr:last-child td{border-bottom:none}td.num{text-align:right;font-variant-numeric:tabular-nums}.alert{border-radius:10px;margin-bottom:14px;padding:12px 14px;font-size:14px}.alert.err{background:var(--danger-soft);color:var(--danger)}.alert.ok{background:var(--primary-soft);color:var(--primary-ink)}.alert.info{background:var(--info-soft);color:var(--info)}.checklist{gap:8px;margin:0;padding:0;list-style:none;display:grid}.checklist li{align-items:center;gap:10px;display:flex}.copy{background:var(--surface-2);font-family:var(--mono);word-break:break-all;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:inline-flex}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login .card{width:100%;max-width:380px}pre.json{background:var(--surface-2);border-radius:8px;max-height:240px;margin:0;padding:10px;font-size:12px;overflow:auto}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:18px;display:flex;overflow-x:auto}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:8px 8px 0 0;padding:10px 14px}.tabs button.active{color:var(--text);border-bottom-color:var(--primary);font-weight:600}.tabs button:hover{background:var(--surface-2)}.liff{max-width:560px;margin:0 auto;padding:16px 16px 48px}.liff .hero{align-items:center;gap:12px;margin-bottom:16px;display:flex}.liff .hero img{border-radius:50%;width:44px;height:44px}.liff .sub{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:12px 0;display:flex}.liff .sub:last-child{border-bottom:none}.liff .sub .name{font-weight:600}.liff .sub .meta{color:var(--muted);font-size:13px}.liff .sub .right{text-align:right;flex-shrink:0}.liff .sub .date{font-variant-numeric:tabular-nums;font-weight:600}.liff .sub .soon{color:var(--warn)}.liff .sub .today{color:var(--danger)}.liff .big{justify-content:center;width:100%;padding:13px;font-size:16px}
