/* Warm Coral design language — CSS variables. Load Plus Jakarta Sans (400,500,600,700,800) and Phosphor duotone first. */
:root {
  --paper:#FFFFFF; --ink:#1F1B2D; --muted:#6F6A82; --cream:#FFF6E8; --sand:#FFEFD2; --line:#F0E8DC;
  --coral:#FF7A7A; --orange:#FF9F5A; --yellow:#FFCB57; --violet:#7C5CFF; --coral-deep:#E0564F; --lavender-soft:#C9B8FF;
  --green-bg:#E8F7EE; --green-fg:#1F7A3A; --green-text:#3B5F48;
  --grad-primary:linear-gradient(135deg,#FF7A7A 0%,#FF9F5A 100%);
  --grad-sun:linear-gradient(135deg,#FFCB57 0%,#FF9F5A 100%);
  --grad-celebration:linear-gradient(135deg,#7C5CFF 0%,#FF7A7A 100%);
  --grad-thumb:linear-gradient(160deg,#FFCB57 0%,#FF7A7A 100%);
  --grad-surface-soft:linear-gradient(135deg,#FFF6E8 0%,#FFEFD2 100%);
  --grad-progress:linear-gradient(90deg,#FFCB57,#FF9F5A,#FF7A7A);
  --grad-dark-card:linear-gradient(135deg,#1F1B2D,#3A3350);
  --font-sans:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r-pill:999px; --r-xl:28px; --r-lg:24px; --r-md:20px; --r-sm:16px; --r-xs:14px; --r-badge:18px; --r-badge-sm:12px;
  --sh-card:0 6px 20px rgba(31,27,45,.08); --sh-raised:0 14px 36px rgba(31,27,45,.12); --sh-float:0 18px 40px rgba(31,27,45,.16);
  --sh-glow:0 10px 30px rgba(255,122,122,.30); --sh-glow-strong:0 14px 36px rgba(255,122,122,.32); --sh-hero:0 30px 60px rgba(31,27,45,.22);
  --bd-line:2px solid #F0E8DC; --bd-focus:2px solid #FF9F5A; --bd-dash:3px dashed #FF9F5A;
  --tap:44px; --btn-md:46px; --btn-lg:50px; --btn-xl:54px; --input:48px;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.5}
button{font-family:inherit}
:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}
/* type roles */
.t-display{font-size:clamp(40px,6vw,68px);font-weight:800;line-height:1.02;letter-spacing:-.035em}
.t-h1{font-size:30px;font-weight:800;line-height:1.1;letter-spacing:-.03em}
.t-h2{font-size:26px;font-weight:800;letter-spacing:-.03em}
.t-card{font-size:22px;font-weight:800;line-height:1.15;letter-spacing:-.03em}
.t-section{font-size:17px;font-weight:800;letter-spacing:-.01em}
.t-body{font-size:15px;font-weight:400;line-height:1.5}.t-body-strong{font-size:15px;font-weight:600}
.t-caption{font-size:13px;font-weight:600;color:var(--muted)}
.t-label{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--coral-deep)}
.t-gradient{background:var(--grad-primary);-webkit-background-clip:text;background-clip:text;color:transparent}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--r-pill);font-weight:800;font-size:15px;cursor:pointer;min-height:var(--btn-lg);padding:13px 22px;transition:transform .15s}
.btn-primary{background:var(--grad-primary);color:#fff;box-shadow:var(--sh-glow)}.btn-primary:hover{transform:translateY(-1px)}.btn-primary:disabled{opacity:.45;cursor:default}
.btn-secondary{background:#fff;color:var(--ink);border:var(--bd-line);font-weight:700}
.btn-soft{background:var(--cream);color:var(--ink);min-height:var(--tap);padding:10px 16px}
.btn-ghost{background:transparent;color:var(--muted);font-weight:700;min-height:var(--tap);padding:10px 12px}
.btn-inverse{background:#fff;color:var(--ink)}
.btn-destructive{background:transparent;color:var(--coral-deep)}
/* chips, tags */
.chip{min-height:var(--tap);border-radius:var(--r-pill);padding:9px 16px;font-weight:700;font-size:14px;border:var(--bd-line);background:#fff;color:var(--ink);cursor:pointer}
.chip[aria-checked="true"],.chip.is-on{background:var(--grad-primary);color:#fff;border-color:transparent}
.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);background:var(--cream);font-size:12px;font-weight:800}
.tag-muted{color:var(--muted)}.tag-primary{background:var(--grad-primary);color:#fff}.tag-yellow{background:var(--yellow)}.tag-green{background:var(--green-bg);color:var(--green-fg)}
/* surfaces */
.card{background:#fff;border-radius:var(--r-xl);box-shadow:var(--sh-raised);overflow:hidden}
.card-header{background:var(--grad-primary);color:#fff;padding:18px 22px;display:flex;align-items:center;justify-content:space-between}
.tile{background:var(--cream);border-radius:var(--r-md);padding:16px}
.tile-outline{background:#fff;border:var(--bd-line);border-radius:var(--r-md);padding:16px}
.tile-sun{background:var(--grad-sun);border-radius:var(--r-md);padding:16px}
.tile-celebrate{background:var(--grad-celebration);color:#fff;border-radius:var(--r-xl);padding:26px}
.tile-dark{background:var(--grad-dark-card);color:#fff;border-radius:var(--r-md);padding:14px 16px;box-shadow:0 14px 36px rgba(31,27,45,.25)}
.row{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 14px;border-radius:var(--r-md);background:#fff;border:var(--bd-line);box-shadow:var(--sh-card);text-align:left;cursor:pointer;font:inherit;color:var(--ink)}
.row[aria-checked="true"]{background:var(--cream);border-color:var(--orange)}
.icon-badge{width:52px;height:52px;border-radius:var(--r-badge);background:var(--grad-primary);color:#fff;display:inline-flex;align-items:center;justify-content:center}
.icon-badge-soft{background:var(--cream);color:var(--coral-deep)}
/* fields */
.input{width:100%;min-height:var(--input);padding:12px 18px;border-radius:var(--r-sm);border:var(--bd-line);font:inherit;font-weight:600;font-size:16px;background:#fff;color:var(--ink)}
.input:focus{border-color:var(--orange);outline:0}.input.is-error{border-color:var(--coral)}
.seg{display:inline-flex;padding:4px;border-radius:var(--r-pill);background:var(--cream)}
.seg-opt{min-height:40px;padding:8px 16px;border-radius:var(--r-pill);border:0;font-weight:800;font-size:14px;background:transparent;color:var(--muted);cursor:pointer}
.seg-opt[aria-checked="true"]{background:#fff;color:var(--ink);box-shadow:0 2px 8px rgba(31,27,45,.10)}
.toggle{width:56px;height:32px;border-radius:var(--r-pill);border:0;position:relative;background:var(--line);cursor:pointer}
.toggle[aria-pressed="true"]{background:var(--grad-primary)}
.toggle::after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .2s}
.toggle[aria-pressed="true"]::after{left:28px}
.dropzone{display:flex;flex-direction:column;align-items:center;gap:10px;padding:36px 20px;background:var(--grad-surface-soft);border:var(--bd-dash);border-radius:var(--r-xl);text-align:center;cursor:pointer}
/* progress */
.progress{height:8px;border-radius:4px;background:var(--cream);overflow:hidden}.progress>i{display:block;height:100%;border-radius:4px;background:var(--grad-progress)}
/* nav */
.tabbar{position:fixed;left:12px;right:12px;bottom:12px;border-radius:var(--r-xl);background:rgba(255,255,255,.92);backdrop-filter:blur(12px);box-shadow:0 10px 30px rgba(31,27,45,.14);display:grid;grid-auto-flow:column;padding:6px}
.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;border-radius:22px;font-size:10.5px;font-weight:800;text-decoration:none;color:var(--muted)}
.tabbar a[aria-current="page"]{background:var(--grad-primary);color:#fff}
.sidebar{width:224px;padding:28px 18px;background:var(--cream);display:flex;flex-direction:column;gap:6px}
.sidebar a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--r-xs);font-weight:600;min-height:46px;text-decoration:none;color:var(--ink)}
.sidebar a[aria-current="page"]{background:#fff;color:var(--coral-deep);box-shadow:var(--sh-card)}
/* motion */
@keyframes in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}100%{transform:scale(1)}}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes scan{from{top:0}to{top:calc(100% - 4px)}}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,159,90,.5)}50%{box-shadow:0 0 0 6px rgba(255,159,90,0)}}
@keyframes confetti{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.4);opacity:0}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001s!important}}
