:root{--color-primary: #3b4b3a;--color-primary-fill: #3b4b3a;--color-primary-dark: #2d3a2c;--color-background: #faf7f4;--color-surface: #f3ede6;--color-text: #1c1917;--color-text-secondary: #6b645e;--color-accent: #ed6841;--color-success: #6b8e3a;--color-destructive: #c4503a;--color-star: #d4a843;--color-icon: #78716c;--color-border: #e4ddd5;--color-on-primary: #ffffff;--alpha-subtle: .09;--alpha-overlay: .15;--color-primary-subtle: rgba(59, 75, 58, .09);--color-accent-subtle: rgba(237, 104, 65, .12);--color-destructive-subtle: rgba(196, 80, 58, .1);--color-success-subtle: rgba(107, 142, 58, .12);--space-xxs: 2px;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 20px;--space-2xl: 24px;--space-3xl: 32px;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(28, 25, 23, .05);--shadow-md: 0 2px 8px rgba(28, 25, 23, .08);--shadow-lg: 0 8px 24px rgba(28, 25, 23, .12);--font-sans: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-serif: "Fraunces", ui-serif, Georgia, serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-lg: 17px;--text-xl: 22px;--text-2xl: 28px;--sidebar-width: 232px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-background);-webkit-font-smoothing:antialiased}a{color:var(--color-primary)}h1,h2,h3{margin:0;font-weight:600}h1{font-family:var(--font-serif);font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}code,.mono{font-family:var(--font-mono);font-size:var(--text-xs)}button,input,select{font:inherit}.shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100%}.sidebar{background:var(--color-primary-dark);color:var(--color-on-primary);padding:var(--space-2xl) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-2xl);position:sticky;top:0;height:100vh}.brand{font-family:var(--font-serif);font-size:var(--text-xl);display:flex;align-items:baseline;gap:var(--space-sm)}.brand small{font-family:var(--font-sans);font-size:var(--text-xs);opacity:.6;letter-spacing:.08em;text-transform:uppercase}.nav{display:flex;flex-direction:column;gap:var(--space-xxs)}.nav a{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:#ffffffc7;text-decoration:none;font-weight:500}.nav a:hover{background:#ffffff14;color:#fff}.nav a.active{background:#ffffff24;color:#fff}.nav-badge{background:var(--color-accent);color:#fff;font-size:var(--text-xs);font-weight:600;border-radius:var(--radius-full);padding:1px 8px}.sidebar-footer{margin-top:auto;font-size:var(--text-sm);opacity:.85;display:flex;flex-direction:column;gap:var(--space-sm)}.main{padding:var(--space-3xl);max-width:1280px;width:100%;min-width:0}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-lg);margin-bottom:var(--space-2xl)}.page-header p{margin:var(--space-xs) 0 0;color:var(--color-text-secondary)}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);border:1px solid transparent;background:var(--color-primary-fill);color:var(--color-on-primary);font-weight:600;cursor:pointer}.btn:hover{background:var(--color-primary-dark)}.btn:disabled{opacity:.5;cursor:default}.btn.secondary{background:transparent;color:var(--color-primary);border-color:var(--color-border)}.btn.secondary:hover{background:var(--color-primary-subtle)}.btn.ghost{background:transparent;color:#ffffffd9;border-color:#ffffff40;padding:var(--space-xs) var(--space-md)}.btn.ghost:hover{background:#ffffff1a}.input{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;color:var(--color-text)}.input:focus{outline:2px solid var(--color-primary-subtle);border-color:var(--color-primary)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-md)}.stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);text-decoration:none;color:inherit;display:block}.stat:hover{border-color:var(--color-primary)}.stat .label{font-size:var(--text-sm);color:var(--color-text-secondary)}.stat .value{font-family:var(--font-serif);font-size:var(--text-2xl);margin-top:var(--space-xs)}.stat.warn .value{color:var(--color-accent)}.section{margin-top:var(--space-3xl)}.section h2{margin-bottom:var(--space-md)}.chip{display:inline-block;padding:1px 8px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;background:var(--color-primary-subtle);color:var(--color-primary);white-space:nowrap}.chip.accent{background:var(--color-accent-subtle);color:var(--color-accent)}.chip.danger{background:var(--color-destructive-subtle);color:var(--color-destructive)}.chip.success{background:var(--color-success-subtle);color:var(--color-success)}.muted{color:var(--color-text-secondary)}.error-box{background:var(--color-destructive-subtle);color:var(--color-destructive);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-lg)}.empty{padding:var(--space-3xl);text-align:center;color:var(--color-text-secondary)}.spinner{padding:var(--space-2xl);color:var(--color-text-secondary)}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md)}table.data{width:100%;border-collapse:collapse;font-size:var(--text-sm)}table.data th,table.data td{text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);vertical-align:middle;white-space:nowrap}table.data th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);background:var(--color-surface);position:sticky;top:0}table.data tr:last-child td{border-bottom:0}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--color-primary-subtle)}table.data td.num{text-align:right;font-variant-numeric:tabular-nums}table.data td.wrap{white-space:normal;max-width:420px}.pager{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-md);color:var(--color-text-secondary);font-size:var(--text-sm)}.thumb{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);background:var(--color-primary-subtle);display:block}.avatar{width:64px;height:64px;border-radius:var(--radius-full);background:var(--color-primary-subtle);color:var(--color-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--text-xl);object-fit:cover;flex-shrink:0}.toolbar{display:flex;gap:var(--space-md);align-items:center;margin-bottom:var(--space-lg)}.toolbar .input{max-width:420px}.tabs{display:flex;gap:var(--space-xs);border-bottom:1px solid var(--color-border);margin:var(--space-2xl) 0 var(--space-lg);overflow-x:auto}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:var(--space-sm) var(--space-md);color:var(--color-text-secondary);font-weight:500;cursor:pointer;white-space:nowrap}.tabs button.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-xs) var(--space-lg);font-size:var(--text-sm)}.kv dt{color:var(--color-text-secondary)}.kv dd{margin:0}.detail-header{display:flex;gap:var(--space-lg);align-items:flex-start}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg)}.photo-strip{display:flex;gap:var(--space-sm);flex-wrap:wrap;padding:var(--space-md)}.photo-strip img{width:120px;height:120px;object-fit:cover;border-radius:var(--radius-sm)}.signin{min-height:100%;display:grid;place-items:center;padding:var(--space-2xl)}.signin .card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-md);background:#fff;box-shadow:var(--shadow-md)}.signin .brand{color:var(--color-primary);font-size:var(--text-2xl)}.field{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm)}@media(max-width:860px){.shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}.sidebar{position:static;height:auto;padding:var(--space-md) var(--space-lg);gap:var(--space-sm)}.brand{font-size:var(--text-lg)}.nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:var(--space-xs);margin:0 calc(-1 * var(--space-lg));padding:0 var(--space-lg);scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a{white-space:nowrap;gap:var(--space-xs)}.sidebar-footer{margin-top:0;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-md)}.main{padding:var(--space-lg)}.page-header,.toolbar,.detail-header{flex-wrap:wrap}.toolbar .input{max-width:none}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.two-col{grid-template-columns:1fr}}.editor{padding-bottom:96px}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-2xl);align-items:start}.form-section{margin-bottom:var(--space-2xl)}.form-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-md)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md) var(--space-lg)}.form-grid .span-2{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm);min-width:0}.field-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);font-weight:600}.field-hint{color:var(--color-text-secondary);font-size:var(--text-xs)}textarea.input{resize:vertical;min-height:72px}.toggle{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0}.toggle input{width:18px;height:18px;accent-color:var(--color-primary)}input[type=checkbox]{accent-color:var(--color-primary);width:18px;height:18px}.action-bar{position:fixed;left:var(--sidebar-width);right:0;bottom:0;background:var(--color-surface);border-top:1px solid var(--color-border);padding:var(--space-md) var(--space-3xl);display:flex;flex-direction:column;gap:var(--space-sm);z-index:5}.action-bar-buttons{display:flex;justify-content:flex-end;gap:var(--space-sm)}.btn.danger{color:var(--color-destructive)}.btn.danger:hover{background:var(--color-destructive-subtle)}.notice{background:#d4a8431f;border:1px solid var(--color-star);border-radius:var(--radius-md);padding:var(--space-md);display:flex;gap:var(--space-md);align-items:center;flex-wrap:wrap}.chip-row{display:flex;gap:var(--space-xs);flex-wrap:wrap;align-items:center}.chip-locked{flex:1;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-primary-subtle);color:var(--color-primary);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete{position:relative}.dropdown{position:absolute;top:100%;left:0;right:0;z-index:10;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-height:320px;overflow-y:auto}.dropdown-item{width:100%;display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:none;border:0;border-bottom:1px solid var(--color-border);text-align:left;cursor:pointer;font-size:var(--text-sm)}.dropdown-item:hover{background:var(--color-primary-subtle)}.image-field{display:flex;flex-direction:column;gap:var(--space-sm)}.image-preview{width:100%;aspect-ratio:16 / 9;background:var(--color-primary-subtle);border-radius:var(--radius-md);display:grid;place-items:center;overflow:hidden}.image-preview.square{aspect-ratio:1}.image-preview img{width:100%;height:100%;object-fit:cover}.image-controls{display:flex;flex-direction:column;gap:var(--space-xs)}.review-list{display:flex;flex-direction:column;gap:var(--space-sm)}.review-row{display:grid;grid-template-columns:72px 1fr auto;gap:var(--space-md);align-items:center;padding:var(--space-md);background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);color:inherit;text-decoration:none}.review-row:hover{border-color:var(--color-primary)}.review-row.thin{border-left:3px solid var(--color-star)}.review-cover{width:72px;height:56px;border-radius:var(--radius-sm);background:var(--color-primary-subtle);overflow:hidden}.review-cover img{width:100%;height:100%;object-fit:cover}.review-body{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0;font-size:var(--text-sm)}.review-side{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-xs);font-size:var(--text-xs);white-space:nowrap}.tab-count{margin-left:var(--space-xs);background:var(--color-accent);color:#fff;border-radius:var(--radius-full);padding:0 7px;font-size:var(--text-xs)}.tabs a{padding:var(--space-sm) var(--space-md);color:var(--color-text-secondary);text-decoration:none;font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}.tabs a.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.lineup{padding:0;overflow:hidden}.lineup-head,.lineup-foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg)}.lineup-foot{border-top:1px solid var(--color-border);flex-wrap:wrap}.lineup table.data th{display:none}.row-actions{display:flex;gap:var(--space-xs);flex-wrap:wrap}.row-actions .btn{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs)}.dup-side{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;margin-top:var(--space-sm)}.list{display:flex;flex-direction:column;gap:var(--space-xs)}.list-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;text-align:left;font:inherit}.list-row:hover{border-color:var(--color-primary)}.modal-backdrop{position:fixed;inset:0;background:#1c191766;display:grid;place-items:center;z-index:20;padding:var(--space-lg)}.modal{background:var(--color-background);border-radius:var(--radius-lg);padding:var(--space-2xl);width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-md)}.promo-row{display:grid;grid-template-columns:96px 1fr auto;gap:var(--space-md);align-items:center;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.promo-row img{width:96px;height:72px;object-fit:cover;border-radius:var(--radius-xs)}.promo-fields{display:flex;flex-direction:column;gap:var(--space-xs)}.promo-actions{display:flex;gap:var(--space-xs)}.toasts{position:fixed;right:var(--space-lg);bottom:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);z-index:30}.toast{background:var(--color-primary-fill);color:var(--color-on-primary);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);max-width:420px}.toast.error{background:var(--color-destructive)}.toast.success{background:var(--color-success)}@media(max-width:860px){.editor-grid,.form-grid{grid-template-columns:1fr}.action-bar{left:0;padding:var(--space-md) var(--space-lg)}}
