:root{--color-bg: #f5f5f3;--color-surface: #ffffff;--color-surface-alt: #f8f8f6;--color-text: #0a0a0a;--color-text-secondary: #555555;--color-text-muted: #888888;--color-border: #e0e0da;--color-border-strong: #d0d0c8;--color-primary: #d4a017;--color-primary-dark: #b08612;--color-primary-light: #fffdf5;--color-accent: #0a0a0a;--color-success: #16a34a;--color-success-bg: #f0fdf4;--color-warning: #ca8a04;--color-warning-bg: #fefce8;--color-danger: #dc2626;--color-danger-bg: #fff1f2;--color-info: #2563eb;--color-info-bg: #eff6ff;--color-seen: #7c3aed;--color-seen-bg: #f5f3ff;--color-neutral: #525252;--color-neutral-bg: #f5f5f4;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-display: "Syne", var(--font-sans);--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-base: 14px;--fs-lg: 16px;--fs-xl: 18px;--fs-2xl: 22px;--fs-3xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .12);--t-fast: .12s;--t-base: .2s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--color-text);background:var(--color-bg);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-text);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit}#app{min-height:100vh;display:flex;flex-direction:column}.app-loading{display:flex;align-items:center;justify-content:center;flex:1;font-size:var(--fs-md);color:var(--color-text-secondary)}.container{max-width:1280px;margin:0 auto;padding:0 var(--sp-6);width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-5)}.card-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:1.3px;color:var(--color-primary-dark);margin-bottom:var(--sp-3)}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);font-weight:600;font-size:var(--fs-md);transition:background var(--t-fast)}.btn-primary{background:var(--color-primary);color:var(--color-text)}.btn-primary:hover{background:var(--color-primary-dark);color:var(--color-surface)}.btn-secondary{background:var(--color-surface-alt);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-border)}.badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:600}.badge-ok{background:var(--color-success-bg);color:var(--color-success)}.badge-warn{background:var(--color-warning-bg);color:var(--color-warning)}.badge-error{background:var(--color-danger-bg);color:var(--color-danger)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-seen{background:var(--color-seen-bg);color:var(--color-seen)}.badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral)}.form-field{display:flex;flex-direction:column;gap:var(--sp-1)}.form-field>span{font-size:var(--fs-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--color-border);border-radius:4px;padding:var(--sp-2) var(--sp-3);font-family:inherit;font-size:var(--fs-base);background:var(--color-surface);color:var(--color-text)}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light, #ffe)}.form-field-invalid input,.form-field-invalid select,.form-field-invalid textarea{border-color:var(--color-danger)}.form-field-error{font-size:var(--fs-xs);margin-top:var(--sp-1);color:var(--color-danger)}
