:root{--primary:#a5322a;--primary-hover:#85271f;--primary-soft:#fbefed;--bg:#f6f7f9;--surface:#fff;--ink:#24262b;--muted:#5f6976;--line:#e5e7eb;--success:#237457;--success-soft:#edf7f1;--warning:#9a641d;--warning-soft:#fff6e7;--info:#41699a;--info-soft:#eef3fa;--danger:#b22932;--shadow:0 4px 20px #23304206;--radius:12px;--party-red:var(--primary);--party-red-deep:var(--primary-hover);--party-gold:var(--warning);--party-gold-light:#f0d9bb;--paper:var(--bg)}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}body,h1,h2,h3,h4,ol,p,ul{margin:0}h1,h2,h3,h4{font-weight:600;line-height:1.4;letter-spacing:-.02em}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}button,input,select,textarea{font:inherit}a,button,input,select,textarea{-webkit-tap-highlight-color:transparent}.button,button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:white;color:#414751;line-height:1.4;font-weight:500;text-decoration:none;transition:background .16s,border-color .16s,box-shadow .16s;flex-shrink:0}.button:hover,button:hover{background:#f6f7f9;border-color:#c9cdd3;color:var(--ink)}.button.primary,button.primary,button[type=submit]{background:var(--primary);border-color:var(--primary);color:white}.button.primary:hover,button.primary:hover,button[type=submit]:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.button.secondary,button.secondary{background:white;color:var(--ink);border-color:var(--line)}.button.ghost,button.ghost,button.plain-button{background:transparent;border-color:transparent;color:var(--muted)}.button.danger,button.danger{background:var(--danger);border-color:var(--danger);color:white}.button[aria-disabled=true],button:disabled{opacity:.45;cursor:not-allowed}input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{min-height:40px;padding:9px 12px;max-width:100%;color:var(--ink);background:white;border:1px solid #dce0e5;border-radius:8px;outline:none;transition:border-color .16s,box-shadow .16s}input::placeholder,textarea::placeholder{color:var(--muted)}textarea{resize:vertical;min-height:90px}input[type=checkbox],input[type=radio]{width:17px;height:17px;margin:2px 0;accent-color:var(--primary);flex-shrink:0}:where(button,a,input,select,textarea,summary):focus-visible{outline:3px solid #a5322a55;outline-offset:3px}input:not([type=checkbox]):focus,select:focus,textarea:focus{border-color:#b87670;box-shadow:0 0 0 3px #a5322a0c}label{color:#4d535d;font-size:13px}input,select,textarea{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.icon{flex-shrink:0;vertical-align:middle}.brand-lockup{display:inline-flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}.brand-lockup,.brand-lockup:hover{color:var(--ink)}.brand-mark{display:grid;place-items:center;width:38px;height:42px;color:var(--primary)}.brand-mark svg{width:34px;height:34px}.brand-word{font-size:23px;font-weight:700;letter-spacing:.06em;line-height:1.2}.brand-word small{margin-top:5px;letter-spacing:.03em;font-weight:400;color:var(--muted)}.brand-word small,.eyebrow{display:block;font-size:12px}.eyebrow{line-height:1.5;letter-spacing:.12em;font-weight:600;color:var(--primary);margin-bottom:7px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.page-header h1{font-size:27px}.page-header p{color:var(--muted);margin-top:8px;font-size:13px;max-width:720px}.page-header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:5px;color:#606774;background:#f0f2f4;font-size:12px;line-height:1.6;font-weight:500;white-space:nowrap}.status-badge.success{color:var(--success);background:var(--success-soft)}.status-badge.warning{color:var(--warning);background:var(--warning-soft)}.status-badge.info{color:var(--info);background:var(--info-soft)}.status-dot{width:5px;height:5px;border-radius:50%;background:currentColor}.empty-state{padding:48px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px}.empty-state h3{font-size:16px}.empty-state p{color:var(--muted);max-width:340px;font-size:13px}.empty-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:#f3f4f6;color:var(--muted);margin-bottom:3px}.skeleton-stack{display:grid;gap:14px;padding:24px 0}.skeleton-line{height:16px;border-radius:5px;background:#e9ecf0;animation:breathe 1.6s ease-in-out infinite}.skeleton-line:nth-child(2n){width:72%}.skeleton-line:last-child{width:48%}@keyframes breathe{50%{opacity:.5}}.ui-dialog{position:fixed;inset:0;border:1px solid var(--line);border-radius:16px;padding:0;width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 40px);margin:auto;box-shadow:0 24px 100px #19212c33;color:var(--ink);background:white}.ui-dialog[open]{display:flex;flex-direction:column;animation:appear .18s ease-out}.ui-dialog::backdrop{background:#17212c66;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.ui-dialog.wide{width:min(820px,calc(100vw - 32px))}.ui-dialog.drawer{margin:0 0 0 auto;height:100dvh;max-height:100dvh;width:min(560px,100vw);border-radius:16px 0 0 16px}.dialog-header{padding:24px;display:flex;gap:24px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--line);flex-shrink:0}.dialog-header h2{font-size:20px;margin:0}.dialog-header p{font-size:13px;color:var(--muted);margin-top:6px}.dialog-body{padding:24px;overflow-y:auto;min-height:0}.dialog-footer{padding:16px 24px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:10px;background:#fafbfc;flex-shrink:0}.icon-button{width:34px;min-height:34px;padding:6px;background:transparent;border:0;color:var(--muted)}.confirm-content{display:flex;align-items:flex-start;gap:16px}.confirm-icon{color:var(--info)}.confirm-icon.danger{color:var(--danger)}.file-picker{position:relative;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:12px;padding:20px;min-height:76px;background:#fafbfc;border:1px dashed #cbd0d7;border-radius:10px;cursor:pointer;overflow:hidden;color:var(--muted)}.file-picker:hover{border-color:var(--primary);background:var(--primary-soft)}.file-picker input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.file-picker span{overflow:hidden;text-overflow:ellipsis}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.notice{display:flex;align-items:flex-start;gap:10px;padding:13px 16px;border-radius:8px;background:var(--info-soft);color:var(--info);margin:16px 0;font-size:13px}.notice.error{background:#fdf0f0;color:#a12b34}.notice.success{background:var(--success-soft);color:var(--success)}.notice.warning{background:var(--warning-soft);color:#885e29}.notice p{white-space:pre-wrap}@keyframes appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (max-width:767px){.page-header{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:22px}.page-header h1{font-size:25px}.page-header-actions{width:100%}.button,button{min-height:44px}input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px;min-height:44px}.ui-dialog.drawer{border-radius:12px 12px 0 0;margin-top:auto;height:auto;max-height:94dvh}.dialog-body,.dialog-header{padding:20px}.brand-word small{display:none}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.file-picker:focus-within{outline:3px solid #a5322a55;outline-offset:3px}.skip-link{position:fixed;top:-70px;left:16px;z-index:200;padding:12px 20px;border-radius:8px;background:white;border:1px solid var(--primary);color:var(--primary)}.skip-link:focus{top:12px}#page-content:focus{outline:none}