:root{color-scheme:light dark;--bg: #f5f7fa;--surface: #ffffff;--surface-2: #eef1f5;--surface-3: #e3e7ee;--border: #e2e6ec;--border-strong: #bcc3cf;--text: #111520;--text-muted: #4e5566;--text-faint: #676c76;--accent: #594fd7;--accent-hover: #4635bc;--accent-soft: rgb(89 79 215 / .1);--accent-contrast: #ffffff;--danger: #c51a38;--chart-1: #594fd7;--chart-2: #078a8b;--chart-3: #a14a91;--chart-4: #066bb8;--chart-5: #338d3c;--chart-6: #b8494f;--chart-7: #0095b5;--chart-8: #007654;--chart-9: #945eba;--chart-10: #7b8f14;--chart-other: #8e929b;--heat-0: #e3e7ee;--heat-1: #d0d4fc;--heat-2: #a9afff;--heat-3: #7d7df9;--heat-4: #594fd7;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", "Helvetica Neue", "Noto Sans", "Noto Sans CJK SC", "Noto Sans CJK JP", "Noto Sans CJK KR", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Microsoft YaHei", "Malgun Gothic", "PingFang SC", sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", "Noto Sans Mono CJK SC", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 27px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgb(17 21 32 / .06), 0 8px 24px -18px rgb(17 21 32 / .22);--shadow-2: 0 1px 0 var(--border), 0 10px 24px -22px rgb(17 21 32 / .28);--dur-fast: .12s;--dur-base: .2s;--ease: cubic-bezier(.2, .6, .2, 1);--nav-width: 232px;--header-height: 60px;--row-height: 36px}@media(prefers-color-scheme:dark){:root{--bg: #0a0c11;--surface: #12151c;--surface-2: #1a1e26;--surface-3: #242935;--border: #232833;--border-strong: #383e4c;--text: #e6e9f0;--text-muted: #9ba3b4;--text-faint: #828896;--accent: #9398ff;--accent-hover: #b0b7ff;--accent-soft: rgb(147 152 255 / .16);--accent-contrast: #0a0c11;--danger: #f8767a;--chart-1: #9398ff;--chart-2: #07caca;--chart-3: #d882c6;--chart-4: #57a3ef;--chart-5: #7dce80;--chart-6: #ed7f81;--chart-7: #34d1f9;--chart-8: #23b283;--chart-9: #c592ea;--chart-10: #b3ca60;--chart-other: #6f757e;--heat-0: #1a1e26;--heat-1: #2c2d58;--heat-2: #47459a;--heat-3: #6765db;--heat-4: #9398ff;--shadow-1: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -16px rgb(0 0 0 / .7);--shadow-2: 0 1px 0 var(--border), 0 12px 28px -24px rgb(0 0 0 / .85)}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased}.app-root{min-height:100%}:where(a){color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-underline-offset:2px}:where(a):hover{color:var(--accent-hover)}:where(button,a,select,input,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{position:absolute;left:var(--space-3);top:calc(var(--space-2) * -6);z-index:10;padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:top var(--dur-fast) var(--ease)}.skip-link:focus{top:var(--space-2)}.app{display:grid;grid-template-columns:var(--nav-width) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header header" "nav    main";min-height:100vh}.header{grid-area:header;position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);min-height:var(--header-height);padding:var(--space-3) var(--space-5);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);box-shadow:var(--shadow-2)}.brand{display:flex;align-items:baseline;gap:var(--space-2);margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.brand-mark{display:inline-block;width:20px;height:20px;border-radius:var(--radius-sm);background:url(./logo.png) center / cover no-repeat;transform:translateY(2px)}.header-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-left:auto}.chip{display:inline-flex;align-items:baseline;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}.chip b{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text)}.chip-mode{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent);color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.nav{grid-area:nav;padding:var(--space-4) var(--space-3);border-right:1px solid var(--border);background:color-mix(in srgb,var(--surface) 55%,transparent)}.nav-list{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding:0;list-style:none}.nav-group-label{padding:var(--space-3) var(--space-3) var(--space-1);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.nav-item{display:block;position:relative;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-sm);text-decoration:none;transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:500}.nav-item[aria-current=page]:before{content:"";position:absolute;left:0;top:20%;bottom:20%;width:2px;border-radius:var(--radius-pill);background:var(--accent)}.main{grid-area:main;min-width:0;padding:var(--space-5)}.view{display:flex;flex-direction:column;gap:var(--space-4);max-width:1180px}.view-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3)}.view-title{margin:0;font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em}.view-sub{margin:var(--space-1) 0 0;color:var(--text-muted);font-size:var(--text-sm)}.view-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-left:auto}.card{padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.card-flush{padding:0;overflow:hidden}.control-label{font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.segmented{display:inline-flex;padding:2px;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill)}.segmented button{padding:var(--space-1) var(--space-3);border:0;border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.segmented button:hover{color:var(--text)}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast);font-weight:500}.select,.text-input{padding:var(--space-2) var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font:inherit;font-size:var(--text-sm)}.text-input::placeholder{color:var(--text-faint)}.button{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--accent);border:1px solid transparent;border-radius:var(--radius-md);color:var(--accent-contrast);font:inherit;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background-color var(--dur-fast) var(--ease)}.button:hover{background:var(--accent-hover)}.button-quiet{background:var(--surface-2);border-color:var(--border);color:var(--text)}.button-quiet:hover{background:var(--surface-3)}.button-danger{background:var(--danger);color:var(--accent-contrast)}.button-danger:hover{background:color-mix(in srgb,var(--danger) 82%,var(--text))}.button:disabled{opacity:.55;cursor:not-allowed}.chart{color:var(--text-muted);overflow-x:auto}.chart svg{max-width:100%;height:auto}.chart figure{margin:0}.legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border);font-size:var(--text-xs);color:var(--text-muted)}.legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.legend-swatch{width:10px;height:10px;border-radius:3px;flex:0 0 auto}.legend-value{font-family:var(--font-mono);color:var(--text-faint)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}.table th{position:sticky;top:0;z-index:1;background:var(--surface-2);color:var(--text-muted);font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.06em}.table tbody tr:hover td{background:var(--surface-2)}.table tbody tr:last-child td{border-bottom:0}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.muted{color:var(--text-muted)}.vtable{position:relative;height:560px;overflow:auto}.vtable-spacer{position:relative;width:100%}.vtable-rows{position:absolute;left:0;right:0;top:0}.vtable .table td{height:var(--row-height);padding-top:0;padding-bottom:0}.row-count{font-size:var(--text-xs);color:var(--text-faint)}.card-flush .row-count{margin:0;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.calendar{display:flex;align-items:flex-start;gap:var(--space-1)}.calendar-scroll{min-width:0;overflow-x:auto;padding-bottom:var(--space-2)}.calendar-gutter{flex:0 0 auto}.calendar svg{display:block}.heat-cell{transition:opacity var(--dur-fast) var(--ease)}.heat-cell:hover{opacity:.75}.calendar-label{fill:var(--text-faint);font-size:10px;font-family:var(--font-sans)}.calendar-foot{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-4);font-size:var(--text-xs);color:var(--text-faint)}.heat-legend{display:inline-flex;align-items:center;gap:var(--space-2)}.heat-legend span{display:inline-block;width:11px;height:11px;border-radius:2px}.empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);padding:var(--space-6) var(--space-5);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);color:var(--text-muted)}.empty h2{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--text)}.empty p{margin:0;max-width:52ch;font-size:var(--text-sm)}.empty-center{align-items:center;text-align:center;margin:var(--space-7) auto;max-width:560px}.chart-empty{display:grid;place-items:center;min-height:200px;color:var(--text-faint);font-size:var(--text-sm)}.error{border-color:color-mix(in srgb,var(--danger) 50%,transparent);color:var(--danger)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.app-bare{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header" "main"}.app-bare .main{display:grid;place-items:start center;padding-top:var(--space-7)}.app-bare .view{width:100%;max-width:560px}.app-bare .view-controls{margin-left:0;justify-content:center}.panel{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.panel-title{margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.panel-sub{margin:calc(var(--space-3) * -1) 0 0;color:var(--text-muted);font-size:var(--text-sm)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field-label{font-size:var(--text-sm);font-weight:500}.field .text-input{width:100%;padding:var(--space-3)}.field-hint{margin:0;color:var(--text-faint);font-size:var(--text-xs)}.actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.notice{margin:0;padding:var(--space-3);border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-sm)}.notice-info{border-left-color:var(--border-strong)}.notice-success{border-left-color:var(--accent);color:var(--text)}.notice-warn{border-left-color:var(--accent);background:var(--accent-soft);color:var(--text)}.notice-error{border-left-color:var(--danger);color:var(--danger)}.message-slot:empty{display:none}.provider-list{display:flex;flex-direction:column;gap:var(--space-2)}.provider{flex-direction:column;align-items:flex-start;gap:2px;padding:var(--space-3) var(--space-4);text-align:left}.provider-hint{font-size:var(--text-xs);font-weight:400;opacity:.72}.signin-hero{text-align:center;display:grid;justify-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}.signin-logo{border-radius:var(--radius-lg)}.signin-title{margin:0;font-size:var(--text-xl)}.signin-lede{margin:0;max-width:46ch;color:var(--text-muted);font-size:var(--text-sm);line-height:1.55}.signin-legal{margin:var(--space-3) 0 0;text-align:center;font-size:var(--text-xs);color:var(--text-muted)}.method-list{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}.method-list li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md)}.method-list li>span:first-child{font-weight:500}.method-list li>.field-hint{margin-left:auto}.download-help{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.download-help summary{cursor:pointer;color:var(--text)}.download-steps{margin:var(--space-2) 0 0;padding-left:var(--space-4);display:grid;gap:var(--space-1)}.stepper{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:0 0 var(--space-2);padding:0;list-style:none;font-size:var(--text-xs);color:var(--text-faint)}.stepper-item{display:inline-flex;align-items:center;gap:var(--space-2)}.stepper-dot{display:grid;place-items:center;width:20px;height:20px;border:1px solid var(--border-strong);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:11px}.stepper-item[data-state=active]{color:var(--text)}.stepper-item[data-state=active] .stepper-dot{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.stepper-item[data-state=done] .stepper-dot{border-color:var(--accent);color:var(--accent)}.code-block{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-md)}.code-text{font-family:var(--font-mono);font-size:var(--text-lg);letter-spacing:.08em;word-break:break-all;user-select:all}.code-text-url{font-size:var(--text-sm);letter-spacing:normal}.toggle{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-1) var(--space-3)}.toggle-input{appearance:none;position:relative;width:36px;height:20px;margin:0;background:var(--surface-3);border:1px solid var(--border-strong);border-radius:var(--radius-pill);cursor:pointer;transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.toggle-input:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:var(--text-muted);border-radius:var(--radius-pill);transition:transform var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.toggle-input:checked{background:var(--accent);border-color:var(--accent)}.toggle-input:checked:after{background:var(--accent-contrast);transform:translate(16px)}.toggle-input:disabled{opacity:.55;cursor:progress}.toggle-label{font-size:var(--text-sm);font-weight:500;cursor:pointer}.toggle-desc{grid-column:2;margin:0;max-width:62ch;color:var(--text-muted);font-size:var(--text-xs)}.toggle-list{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4) 0 0;border-top:1px solid var(--border)}.settings-slot{display:flex;flex-direction:column;gap:var(--space-4)}.confirm{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--surface-2);border:1px solid var(--border-strong);border-left-width:3px;border-radius:var(--radius-md)}.confirm-danger{border-color:color-mix(in srgb,var(--danger) 55%,var(--border-strong));border-left-color:var(--danger)}.confirm-title{margin:0;font-size:var(--text-base);font-weight:600}.confirm-body{margin:0;max-width:62ch;color:var(--text-muted);font-size:var(--text-sm)}.panel-danger{border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.panel-danger .panel-title{color:var(--danger)}.app-public{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"header" "main"}.app-public .main{display:grid;justify-items:center}.app-public .view{width:100%;max-width:900px}.card-title{margin:0 0 var(--space-4);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.card-flush .card-title{margin:0;padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--border)}.public-foot{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border);color:var(--text-faint);font-size:var(--text-xs);text-align:center}.spinner{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:var(--radius-pill);animation:spin .72s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);grid-template-areas:"header" "nav" "main"}.nav{position:sticky;top:var(--header-height);z-index:2;display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-3);border-right:0;border-bottom:1px solid var(--border);background:var(--surface);overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-list{flex-direction:row;gap:var(--space-1)}.nav-group-label{display:none}.nav-item{white-space:nowrap}.nav-item[aria-current=page]:before{inset:auto 20% 0;width:auto;height:2px}.main,.card{padding:var(--space-4) var(--space-3)}.view-controls{margin-left:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
