:root{--tfc-black: #1A1A1A;--tfc-white: #FFFFFF;--tfc-green: #34C369;--tfc-surface-background: #F5F5F7;--tfc-surface-card: #FFFFFF;--tfc-surface-muted: #FAFAFA;--tfc-text-primary: #1A1A1A;--tfc-text-secondary: #666666;--tfc-text-muted: #888888;--tfc-text-on-brand: #FFFFFF;--tfc-border-default: #E8E8EA;--tfc-border-strong: #1A1A1A;--tfc-state-hover: #2BA858;--tfc-state-active: #249A4E;--tfc-state-focus: #34C369;--tfc-state-success: #34C369;--tfc-state-warning: #F5A524;--tfc-state-error: #E5484D;--tfc-state-info: #0091FF;--tfc-neutral-50: #FAFAFA;--tfc-neutral-100: #F5F5F7;--tfc-neutral-200: #E8E8EA;--tfc-neutral-300: #D4D4D8;--tfc-neutral-400: #A1A1AA;--tfc-neutral-500: #888888;--tfc-neutral-600: #666666;--tfc-neutral-700: #52525B;--tfc-neutral-800: #27272A;--tfc-neutral-900: #1A1A1A;--color-primary: var(--tfc-green);--color-on-primary: var(--tfc-white);--color-secondary: var(--tfc-black);--color-background: var(--tfc-surface-background);--color-surface: var(--tfc-surface-card);--color-text: var(--tfc-text-primary);--color-text-secondary: var(--tfc-text-secondary);--color-border: var(--tfc-border-default);--tfc-font-logo: "Bebas Neue", "Oswald", Impact, "Haettenschweiler", "Arial Narrow Bold", sans-serif;--tfc-font-heading: "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--tfc-font-body: "DM Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--tfc-font-mono: "JetBrains Mono", "Fira Code", Menlo, Consolas, ui-monospace, monospace;--tfc-font-print: "Inter", Arial, "Helvetica Neue", sans-serif;--font-family-base: var(--tfc-font-body);--font-family-heading: var(--tfc-font-heading);--font-family-mono: var(--tfc-font-mono);--tfc-fw-regular: 400;--tfc-fw-medium: 500;--tfc-fw-semibold: 600;--tfc-fw-bold: 700;--tfc-fw-black: 900;--tfc-text-xs: .75rem;--tfc-text-sm: .875rem;--tfc-text-base: 1rem;--tfc-text-lg: 1.125rem;--tfc-text-xl: 1.25rem;--tfc-text-2xl: 1.5rem;--tfc-text-3xl: 1.875rem;--tfc-text-4xl: 2.25rem;--tfc-text-5xl: 3rem;--tfc-text-6xl: 3.75rem;--tfc-text-7xl: 4.5rem;--tfc-lh-tight: 1.1;--tfc-lh-snug: 1.25;--tfc-lh-normal: 1.5;--tfc-lh-relaxed: 1.75;--tfc-ls-tight: -.025em;--tfc-ls-normal: 0em;--tfc-ls-wide: .05em;--tfc-ls-wider: .1em;--tfc-space-0: 0;--tfc-space-1: .25rem;--tfc-space-2: .5rem;--tfc-space-3: .75rem;--tfc-space-4: 1rem;--tfc-space-5: 1.25rem;--tfc-space-6: 1.5rem;--tfc-space-8: 2rem;--tfc-space-10: 2.5rem;--tfc-space-12: 3rem;--tfc-space-16: 4rem;--tfc-space-20: 5rem;--tfc-space-24: 6rem;--tfc-radius-none: 0;--tfc-radius-sm: .25rem;--tfc-radius-md: .5rem;--tfc-radius-lg: .75rem;--tfc-radius-xl: 1rem;--tfc-radius-2xl: 1.5rem;--tfc-radius-full: 9999px;--tfc-shadow-none: none;--tfc-shadow-sm: 0 1px 2px 0 rgba(26, 26, 26, .05);--tfc-shadow-md: 0 4px 12px 0 rgba(26, 26, 26, .06);--tfc-shadow-lg: 0 8px 24px 0 rgba(26, 26, 26, .08);--tfc-shadow-xl: 0 16px 48px 0 rgba(26, 26, 26, .12);--tfc-shadow-card: 0 0 30px 0 rgba(26, 26, 26, .06);--tfc-shadow-button: 0 4px 16px 0 rgba(52, 195, 105, .2);--tfc-nav-bg: rgba(255, 255, 255, .82);--tfc-nav-backdrop: blur(20px);--tfc-bp-sm: 640px;--tfc-bp-md: 768px;--tfc-bp-lg: 1024px;--tfc-bp-xl: 1280px;--tfc-bp-2xl: 1536px;--tfc-duration-fast: .15s;--tfc-duration-normal: .2s;--tfc-duration-slow: .4s;--tfc-ease-default: cubic-bezier(.4, 0, .2, 1);--tfc-ease-in: cubic-bezier(.4, 0, 1, 1);--tfc-ease-out: cubic-bezier(0, 0, .2, 1);--tfc-ease-in-out: cubic-bezier(.4, 0, .2, 1)}.tfc,.tfc *{box-sizing:border-box}.tfc{font-family:var(--tfc-font-body);font-size:var(--tfc-text-base);line-height:var(--tfc-lh-normal);color:var(--tfc-text-primary);background:var(--tfc-surface-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tfc h1,.tfc h2,.tfc h3,.tfc h4,.tfc h5,.tfc h6{font-family:var(--tfc-font-heading);font-weight:var(--tfc-fw-bold);line-height:var(--tfc-lh-tight);letter-spacing:var(--tfc-ls-tight);color:var(--tfc-text-primary);margin:0}.tfc code,.tfc pre,.tfc kbd,.tfc samp{font-family:var(--tfc-font-mono)}.tfc-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--tfc-space-2);padding:var(--tfc-space-3) var(--tfc-space-6);font-family:var(--tfc-font-body);font-size:var(--tfc-text-sm);font-weight:var(--tfc-fw-bold);letter-spacing:var(--tfc-ls-wide);border-radius:var(--tfc-radius-md);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background-color var(--tfc-duration-normal) var(--tfc-ease-default),border-color var(--tfc-duration-normal) var(--tfc-ease-default),color var(--tfc-duration-normal) var(--tfc-ease-default),box-shadow var(--tfc-duration-normal) var(--tfc-ease-default)}.tfc-btn-primary{background:var(--tfc-green);color:var(--tfc-white);box-shadow:var(--tfc-shadow-button)}.tfc-btn-primary:hover{background:var(--tfc-state-hover)}.tfc-btn-primary:active{background:var(--tfc-state-active)}.tfc-btn-secondary{background:transparent;color:var(--tfc-text-primary);border-color:var(--tfc-border-strong)}.tfc-btn-secondary:hover{background:var(--tfc-black);color:var(--tfc-white)}.tfc-btn-ghost{background:transparent;color:var(--tfc-text-primary)}.tfc-btn-ghost:hover{background:var(--tfc-neutral-100)}.tfc-card{background:var(--tfc-surface-card);border:1px solid var(--tfc-border-default);border-radius:var(--tfc-radius-xl);padding:var(--tfc-space-6);box-shadow:var(--tfc-shadow-card)}.tfc-badge{display:inline-flex;align-items:center;padding:var(--tfc-space-1) var(--tfc-space-3);font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);font-weight:var(--tfc-fw-semibold);letter-spacing:var(--tfc-ls-wider);text-transform:uppercase;background:var(--tfc-green);color:var(--tfc-white);border-radius:var(--tfc-radius-full)}.tfc-spec{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-sm);color:var(--tfc-text-secondary)}.tfc-nav{background:var(--tfc-nav-bg);backdrop-filter:var(--tfc-nav-backdrop);-webkit-backdrop-filter:var(--tfc-nav-backdrop);border-bottom:1px solid var(--tfc-border-default)}.tfc :focus-visible{outline:2px solid var(--tfc-state-focus);outline-offset:2px;border-radius:var(--tfc-radius-sm)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;font-family:var(--tfc-font-body);color:var(--tfc-text-primary);background:var(--tfc-surface-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100dvh}a{color:inherit;text-decoration:none}input,button,select,textarea{font:inherit}.auth-page{min-height:100dvh;display:grid;place-items:center;padding:var(--tfc-space-6) var(--tfc-space-4);background:var(--tfc-surface-background)}.auth-card{width:100%;max-width:460px;background:var(--tfc-surface-card);border:1px solid var(--tfc-border-default);border-radius:var(--tfc-radius-xl);padding:var(--tfc-space-10) var(--tfc-space-8);box-shadow:var(--tfc-shadow-card);display:grid;gap:var(--tfc-space-6);text-align:center}.auth-brand{display:inline-flex;align-items:stretch;justify-content:center;font-family:var(--tfc-font-logo);letter-spacing:var(--tfc-ls-wide)}.auth-brand__tile{display:inline-flex;align-items:center;justify-content:center;font-size:clamp(.7rem,2vw,1rem);padding:4px 10px;border:2px solid var(--tfc-black);line-height:1}.auth-brand__tile--light{background:var(--tfc-white);color:var(--tfc-black)}.auth-brand__tile--dark{background:var(--tfc-black);color:var(--tfc-white)}.auth-title{font-family:var(--tfc-font-logo);font-weight:400;font-size:clamp(2.25rem,8vw,3.5rem);letter-spacing:var(--tfc-ls-wide);line-height:1;margin:0}.auth-title--small{font-size:clamp(1.5rem,5vw,2.25rem)}.auth-claim{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wider);text-transform:uppercase;color:var(--tfc-text-secondary);margin:0}.auth-form{display:grid;gap:var(--tfc-space-4);text-align:left}.auth-field{display:grid;gap:var(--tfc-space-2)}.auth-field__label{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wider);color:var(--tfc-text-secondary)}.auth-input{font-family:var(--tfc-font-body);font-size:var(--tfc-text-base);padding:12px 14px;border:1px solid var(--tfc-border-default);border-radius:var(--tfc-radius-md);background:var(--tfc-white);color:var(--tfc-text-primary);transition:border-color var(--tfc-duration-fast) var(--tfc-ease-default);width:100%}.auth-input:focus{outline:2px solid var(--tfc-state-focus);outline-offset:2px;border-color:var(--tfc-state-focus)}.auth-error{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wide);color:var(--tfc-state-error);background:#e5484d0f;border:1px solid rgba(229,72,77,.2);padding:10px 12px;border-radius:var(--tfc-radius-md)}.auth-submit{background:var(--tfc-green);color:var(--tfc-white);font-family:var(--tfc-font-body);font-weight:var(--tfc-fw-bold);font-size:var(--tfc-text-sm);letter-spacing:var(--tfc-ls-wide);padding:14px 20px;border:1px solid var(--tfc-green);border-radius:var(--tfc-radius-md);cursor:pointer;box-shadow:var(--tfc-shadow-button);transition:background-color var(--tfc-duration-normal) var(--tfc-ease-default)}.auth-submit:hover:not(:disabled){background:var(--tfc-state-hover);border-color:var(--tfc-state-hover)}.auth-submit:active:not(:disabled){background:var(--tfc-state-active)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-footer{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wide);color:var(--tfc-text-muted);margin:0}.app-shell{min-height:100dvh;display:grid;grid-template-rows:auto 1fr}.app-shell__header{display:flex;align-items:center;justify-content:space-between;padding:var(--tfc-space-4) var(--tfc-space-6);background:var(--tfc-nav-bg);backdrop-filter:var(--tfc-nav-backdrop);-webkit-backdrop-filter:var(--tfc-nav-backdrop);border-bottom:1px solid var(--tfc-border-default);position:sticky;top:0;z-index:10}.app-shell__brand{font-family:var(--tfc-font-logo);letter-spacing:var(--tfc-ls-wide);font-size:var(--tfc-text-xl);color:var(--tfc-text-primary)}.app-shell__user{display:flex;align-items:center;gap:var(--tfc-space-4)}.app-shell__user-name{font-family:var(--tfc-font-body);font-weight:var(--tfc-fw-medium);color:var(--tfc-text-primary)}.app-shell__user-role{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wider);color:var(--tfc-text-secondary)}.app-shell__logout{font-family:var(--tfc-font-body);font-size:var(--tfc-text-xs);font-weight:var(--tfc-fw-bold);letter-spacing:var(--tfc-ls-wide);background:transparent;border:1px solid var(--tfc-border-strong);color:var(--tfc-text-primary);padding:8px 14px;border-radius:var(--tfc-radius-md);cursor:pointer}.app-shell__logout:hover{background:var(--tfc-black);color:var(--tfc-white)}.app-shell__main{padding:var(--tfc-space-8) var(--tfc-space-6);display:grid;place-items:start center}.app-shell__card{width:100%;max-width:920px;background:var(--tfc-surface-card);border:1px solid var(--tfc-border-default);border-radius:var(--tfc-radius-xl);padding:var(--tfc-space-8);box-shadow:var(--tfc-shadow-card);display:grid;gap:var(--tfc-space-4)}.app-shell__card-label{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wider);color:var(--tfc-green)}.app-shell__card-title{font-family:var(--tfc-font-heading);font-weight:var(--tfc-fw-bold);font-size:var(--tfc-text-3xl);margin:0;letter-spacing:var(--tfc-ls-tight)}.app-shell__card-meta{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wide);color:var(--tfc-text-secondary);margin:0}.app-shell__card-text{font-family:var(--tfc-font-body);color:var(--tfc-text-secondary);line-height:var(--tfc-lh-relaxed);margin:0}.admin-table{width:100%;border-collapse:collapse;margin-top:var(--tfc-space-4)}.admin-table th{text-align:left;font-family:var(--tfc-font-mono);font-size:var(--tfc-text-xs);letter-spacing:var(--tfc-ls-wider);color:var(--tfc-text-secondary);padding:var(--tfc-space-3) var(--tfc-space-2);border-bottom:1px solid var(--tfc-border-default)}.admin-table td{padding:var(--tfc-space-4) var(--tfc-space-2);border-bottom:1px solid var(--tfc-border-default)}.admin-table__mono{font-family:var(--tfc-font-mono);font-size:var(--tfc-text-sm)}.admin-table__swatch{display:inline-block;width:12px;height:12px;border-radius:var(--tfc-radius-sm);margin-right:var(--tfc-space-2);vertical-align:middle;border:1px solid var(--tfc-border-default)}
