:root{--color-accent: #8a5a3b;--color-accent-strong: #6b4128;--color-accent-contrast: #ffffff;--color-bg: #faf7f2;--color-surface: #ffffff;--color-surface-raised: #ffffff;--color-border: #ddd4c7;--color-border-strong: #b9ac96;--color-text: #241f1a;--color-text-muted: #5c5346;--color-text-inverse: #fbf8f3;--color-success: #2f6b3f;--color-success-bg: #e3f0e5;--color-danger: #a3372b;--color-danger-bg: #fbe6e3;--color-warning: #8a6d1d;--color-warning-bg: #f6eed0;--color-info: #2b5c8a;--color-info-bg: #e2edf6;--color-role-dm: #6b3fa0;--color-role-dm-bg: #ece1f6;--color-role-player: #2b5c8a;--color-role-player-bg: #e2edf6;--color-visibility-private: #a3372b;--color-visibility-private-bg: #fbe6e3;--color-focus-ring: #2b5c8a}[data-theme=dark]{--color-accent: #d6a26b;--color-accent-strong: #e8bd8c;--color-accent-contrast: #1c1611;--color-bg: #17140f;--color-surface: #201b15;--color-surface-raised: #2a231b;--color-border: #3c332721;--color-border-strong: #4d4130;--color-text: #f2ece1;--color-text-muted: #b9ac96;--color-text-inverse: #17140f;--color-success: #7fce97;--color-success-bg: #1e3324;--color-danger: #e8897d;--color-danger-bg: #3a1f1c;--color-warning: #e3c876;--color-warning-bg: #3a2f14;--color-info: #8fbde3;--color-info-bg: #1c2e3d;--color-role-dm: #c39ee8;--color-role-dm-bg: #2c2138;--color-role-player: #8fbde3;--color-role-player-bg: #1c2e3d;--color-visibility-private: #e8897d;--color-visibility-private-bg: #3a1f1c;--color-focus-ring: #8fbde3}:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .12);--content-max-width: 720px;--touch-target-min: 44px}:root{--font-display: Georgia, "Iowan Old Style", "Palatino Linotype", serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.7;--weight-normal: 400;--weight-medium: 500;--weight-bold: 700}.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch-target-min);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-medium);cursor:pointer;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,opacity .15s ease}.ds-btn:disabled{opacity:.5;cursor:not-allowed}.ds-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.ds-btn--primary{background:var(--color-accent);color:var(--color-accent-contrast)}.ds-btn--primary:hover:not(:disabled){background:var(--color-accent-strong)}.ds-btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.ds-btn--secondary:hover:not(:disabled){background:var(--color-bg)}.ds-btn--danger{background:var(--color-danger);color:var(--color-accent-contrast)}.ds-btn--danger:hover:not(:disabled){opacity:.9}.ds-btn--ghost{background:transparent;color:var(--color-text-muted)}.ds-btn--ghost:hover:not(:disabled){background:var(--color-bg);color:var(--color-text)}.ds-chip{display:inline-flex;align-items:center;min-height:var(--touch-target-min);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.ds-chip:hover{border-color:var(--color-accent)}.ds-chip:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.ds-chip--selected{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:var(--leading-tight);margin:0 0 var(--space-3)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--space-3)}a{color:var(--color-accent)}.page{max-width:var(--content-max-width);margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-8)}.page--wide{max-width:960px}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack--tight{gap:var(--space-2)}.row{display:flex;align-items:center;gap:var(--space-3)}.row--wrap{flex-wrap:wrap}.row--between{justify-content:space-between}.ds-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm)}.muted{color:var(--color-text-muted);font-size:var(--text-sm)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.field-error{font-size:var(--text-xs);color:var(--color-danger)}.field-hint{font-size:var(--text-xs);color:var(--color-text-muted)}input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);min-height:var(--touch-target-min);width:100%}input[type=text]:focus-visible,input[type=email]:focus-visible,input[type=password]:focus-visible,input[type=date]:focus-visible,input[type=number]:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px}input[type=text].ng-invalid.ng-touched,input[type=email].ng-invalid.ng-touched,input[type=password].ng-invalid.ng-touched,input[type=date].ng-invalid.ng-touched,input[type=number].ng-invalid.ng-touched,select.ng-invalid.ng-touched,textarea.ng-invalid.ng-touched{border-color:var(--color-danger)}textarea{min-height:8rem;resize:vertical;line-height:var(--leading-relaxed)}
