/* shadcn/ui (new-york-v4) tokens, dark theme, Morv gold as --primary */
:root{
--radius:.625rem;
--background:oklch(.145 0 0);
--foreground:oklch(.985 0 0);
--card:oklch(.205 0 0);
--card-foreground:oklch(.985 0 0);
--popover:oklch(.205 0 0);
--popover-foreground:oklch(.985 0 0);
--primary:oklch(.76 .115 84);
--primary-foreground:oklch(.205 0 0);
--secondary:oklch(.269 0 0);
--secondary-foreground:oklch(.985 0 0);
--muted:oklch(.269 0 0);
--muted-foreground:oklch(.708 0 0);
--accent:oklch(.371 0 0);
--accent-foreground:oklch(.985 0 0);
--destructive:oklch(.704 .191 22.216);
--border:oklch(1 0 0 / 10%);
--input:oklch(1 0 0 / 15%);
--ring:oklch(.76 .115 84);
--success:oklch(.72 .14 150);
--warning:oklch(.78 .15 65);

--radius-sm:calc(var(--radius) * .6);
--radius-md:calc(var(--radius) * .8);
--radius-lg:var(--radius);
--radius-xl:calc(var(--radius) * 1.4);

--font-sans:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
--font-mono:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
--font-heading:'Oswald',var(--font-sans);

--shadow-xs:0 1px 2px 0 rgb(0 0 0 / .05);
--shadow-sm:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);
--shadow-lg:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);
--focus-ring:0 0 0 3px color-mix(in oklch,var(--ring) 50%,transparent);

--belt-white:#F1EFE9;--belt-blue:#1F5FA8;--belt-purple:#6B3FA0;--belt-brown:#6B4A2F;--belt-black:#0A0A0A;
--belt-grey:#8A8781;--belt-yellow:#E0B322;--belt-orange:#D9701F;--belt-green:#3F7A46;
}
*{box-sizing:border-box;border-color:var(--border);-webkit-tap-highlight-color:transparent}
html{color-scheme:dark}
html,body{margin:0;padding:0;background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
body{padding-bottom:env(safe-area-inset-bottom)}
::selection{background:var(--primary);color:var(--primary-foreground)}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--primary);text-decoration:none;text-underline-offset:4px}
a:hover{text-decoration:underline}
input{font:inherit}

.wrap{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}
.scroll{flex:1;padding:20px 16px 96px}
.center{justify-content:center;padding:32px 16px}

/* typography */
h1,h2,h3{font-family:var(--font-heading);font-weight:600;letter-spacing:.01em;text-transform:uppercase;margin:0;color:var(--foreground)}
h1{font-size:30px;line-height:1.1}
h2{font-size:24px;line-height:1.15}
h3{font-size:18px;line-height:1.2}
p{margin:0}
.eyebrow{font:500 12px/1 var(--font-sans);letter-spacing:.04em;text-transform:uppercase;color:var(--muted-foreground)}
.meta{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.muted{color:var(--muted-foreground)}
.body{font:400 14px/1.55 var(--font-sans);color:var(--muted-foreground)}

/* layout */
.stack{display:flex;flex-direction:column}
.g6{gap:6px}.g8{gap:8px}.g10{gap:10px}.g12{gap:12px}.g14{gap:14px}.g18{gap:18px}
.row{display:flex;align-items:center;gap:10px}
.between{display:flex;justify-content:space-between;align-items:center;gap:10px}
.grow{flex:1;min-width:0}

/* Card */
.card{border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);color:var(--card-foreground);padding:20px;box-shadow:var(--shadow-sm)}
.card--accent{border-color:color-mix(in oklch,var(--primary) 35%,transparent)}
.card--gold{border-color:var(--primary)}
.card--alert{border-color:color-mix(in oklch,var(--warning) 55%,transparent)}
.card--danger{border-color:color-mix(in oklch,var(--destructive) 60%,transparent)}
.hair{border-top:1px solid var(--border);padding-top:10px;margin-top:2px}

/* Button */
.btn{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--radius-md);border:1px solid transparent;font:500 14px/1 var(--font-sans);white-space:nowrap;outline:none;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}
.btn:focus-visible{border-color:var(--ring);box-shadow:var(--focus-ring)}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn--primary{background:var(--primary);color:var(--primary-foreground)}
.btn--primary:hover{background:color-mix(in oklch,var(--primary) 90%,transparent)}
.btn--outline{background:color-mix(in oklch,var(--input) 30%,transparent);border-color:var(--input);color:var(--foreground);box-shadow:var(--shadow-xs)}
.btn--outline:hover{background:color-mix(in oklch,var(--input) 50%,transparent)}
.btn--ghost{background:transparent;color:var(--foreground)}
.btn--ghost:hover{background:color-mix(in oklch,var(--accent) 50%,transparent)}
.btn--sm{height:32px;padding:0 12px;gap:6px;font-size:13px}
.btn--block{width:100%;height:40px}
.btn--icon{width:36px;height:36px;padding:0;flex:0 0 36px}

/* Label + Input */
.field{display:flex;flex-direction:column;gap:8px}
.field>.eyebrow,.field>label{font:500 14px/1 var(--font-sans);letter-spacing:0;text-transform:none;color:var(--foreground)}
.input{height:40px;width:100%;min-width:0;padding:4px 12px;border-radius:var(--radius-md);border:1px solid var(--input);background:color-mix(in oklch,var(--input) 30%,transparent);color:var(--foreground);font-size:16px;box-shadow:var(--shadow-xs);outline:none;transition:border-color .15s,box-shadow .15s}
.input:focus-visible,.input:focus{border-color:var(--ring);box-shadow:var(--focus-ring)}
.input::placeholder{color:var(--muted-foreground)}
.input:disabled{opacity:.5;cursor:not-allowed}

/* Badge */
.badge{display:inline-flex;width:fit-content;flex-shrink:0;align-items:center;justify-content:center;gap:4px;padding:2px 8px;border-radius:999px;border:1px solid transparent;font:500 12px/1.3 var(--font-sans);white-space:nowrap;background:var(--secondary);color:var(--secondary-foreground)}
.badge--gold{background:var(--primary);color:var(--primary-foreground)}
.badge--outline{background:transparent;border-color:var(--border);color:var(--foreground)}
.badge--danger{background:color-mix(in oklch,var(--destructive) 60%,transparent);color:#fff}
.badge--success{background:color-mix(in oklch,var(--success) 18%,transparent);border-color:color-mix(in oklch,var(--success) 35%,transparent);color:var(--success)}
.badge--warning{background:color-mix(in oklch,var(--warning) 18%,transparent);border-color:color-mix(in oklch,var(--warning) 35%,transparent);color:var(--warning)}

/* belt pill (brand) */
.belt{display:inline-flex;align-items:center;gap:8px;height:24px;padding:0 4px 0 10px;border-radius:999px;font:500 12px/1 var(--font-sans);color:#fff;box-shadow:inset 0 0 0 1px rgb(255 255 255 / .1)}
.belt--light{color:#0A0A0A}
.belt__stripes{display:flex;gap:3px;padding-right:6px}
.belt__s{width:3px;height:12px;background:#F1EFE9;border-radius:1px}
.belt__s--off{opacity:.28}

/* Tabs */
.tabs{display:flex;height:36px;align-items:center;border-radius:var(--radius-lg);padding:3px;background:var(--muted);color:var(--muted-foreground)}
.tabs button{flex:1;height:calc(100% - 1px);display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;background:transparent;color:var(--muted-foreground);padding:4px 8px;border-radius:var(--radius-md);font:500 14px/1 var(--font-sans);white-space:nowrap;transition:color .15s,background-color .15s}
.tabs button:hover{color:var(--foreground)}
.tabs button:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.tabs button[aria-selected="true"]{background:color-mix(in oklch,var(--input) 30%,transparent);border-color:var(--input);color:var(--foreground);box-shadow:var(--shadow-sm)}

/* bottom nav */
.nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:color-mix(in oklch,var(--background) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:20}
.nav__inner{max-width:480px;margin:0 auto;display:flex;width:100%}
.nav button{flex:1;background:none;border:0;padding:10px 0 12px;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted-foreground);font:500 11px/1 var(--font-sans);transition:color .15s}
.nav button:hover{color:var(--foreground)}
.nav button[aria-current="page"]{color:var(--primary)}

.ico{display:inline-block;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;flex:0 0 auto}

/* stat card */
.stat{flex:1;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);padding:14px 16px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-sm)}
.stat b{font:600 24px/1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}
.stat span{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}

/* chart bars + Progress */
.bars{display:flex;align-items:flex-end;gap:6px;height:84px}
.bars i{flex:1;background:var(--muted);border-radius:4px 4px 0 0;display:block}
.bars i.on{background:var(--primary)}
.rail{height:8px;border-radius:999px;background:color-mix(in oklch,var(--primary) 20%,transparent);overflow:hidden}
.rail i{display:block;height:8px;background:var(--primary);border-radius:999px}

/* list rows */
.list button,.list .item{width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--border);padding:12px 0;display:flex;justify-content:space-between;align-items:center;gap:10px;color:inherit;font-size:14px}
.list button:hover{color:var(--foreground)}

/* date strip (Calendar day buttons) */
.strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;-ms-overflow-style:none;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.strip button{flex:0 0 52px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 0;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted-foreground);transition:background-color .15s,color .15s}
.strip button:hover{background:color-mix(in oklch,var(--accent) 50%,transparent);color:var(--foreground)}
.strip button b{font:500 10px/1 var(--font-sans);letter-spacing:.04em}
.strip button i{font:600 16px/1 var(--font-sans);font-style:normal;font-variant-numeric:tabular-nums;color:var(--foreground)}
.strip button u{font:400 10px/1 var(--font-sans);text-decoration:none;color:var(--muted-foreground)}
.strip button[aria-selected="true"]{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}
.strip button[aria-selected="true"] i,.strip button[aria-selected="true"] u{color:var(--primary-foreground)}

/* Sonner toast */
.toast{position:fixed;left:16px;right:16px;bottom:84px;max-width:448px;margin:0 auto;background:var(--popover);color:var(--popover-foreground);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;display:flex;gap:10px;align-items:center;z-index:40;box-shadow:var(--shadow-lg);animation:rise .2s cubic-bezier(.16,1,.3,1)}
@keyframes rise{from{opacity:0;transform:translateY(8px) scale(.985)}}
.toast--error{border-color:color-mix(in oklch,var(--destructive) 50%,transparent)}

/* Dialog */
.veil{position:fixed;inset:0;background:rgb(0 0 0 / .5);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px;animation:fade .15s ease-out}
@keyframes fade{from{opacity:0}}
.sheet{width:100%;max-width:400px;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-lg);animation:zoom .15s ease-out}
@keyframes zoom{from{opacity:0;transform:scale(.95)}}

.spin{width:18px;height:18px;border:2px solid var(--muted);border-top-color:var(--primary);border-radius:999px;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.loading{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted-foreground);font:500 14px/1 var(--font-sans)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
