/* ============================================================
   GRIND TRACKER — Identity 2026
   Stylesheet (extracted from original index.html, expanded)
   Design: dark, card-based, blue accent. DO NOT redesign.
   ============================================================ */

:root{
  --bg:#0a0a0a;
  --bg-2:#0f0f0f;
  --card:#161616;
  --card-2:#1c1c1c;
  --border:#27272a;
  --border-2:#1f1f22;
  --text:#fafafa;
  --text-2:#a1a1aa;
  --text-3:#71717a;
  --accent:#3b82f6;
  --accent-soft:rgba(59,130,246,.12);
  --success:#22c55e;
  --success-soft:rgba(34,197,94,.12);
  --danger:#ef4444;
  --danger-soft:rgba(239,68,68,.10);
  --warn:#f59e0b;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter',system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{min-height:100dvh;overflow-x:hidden}
::selection{background:var(--accent);color:#fff}
button{font-family:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
input,textarea,select{font-family:inherit;color:inherit}
textarea{resize:none}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums}

.app{max-width:1280px;margin:0 auto;padding:28px 24px 120px}
@media(max-width:720px){.app{padding:16px 14px 120px}}

/* TOPBAR */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.topbar .brand{display:flex;align-items:center;gap:12px}
.logo{width:34px;height:34px;border-radius:9px;background:#fff;color:#0a0a0a;display:grid;place-items:center;font-weight:800;letter-spacing:-.02em;font-size:14px}
.brand small{color:var(--text-3);letter-spacing:.18em;font-size:11px;text-transform:uppercase;font-weight:500}
.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:13px;font-weight:500;transition:all .15s ease}
.btn:hover{background:var(--card-2);border-color:#3a3a40}
.btn.primary{background:var(--accent);border-color:transparent;color:#fff}
.btn.primary:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent}
.btn.danger{color:var(--danger);border-color:#3a1f22}
.btn.danger:hover{background:#1a0d10}
.btn.sm{padding:6px 10px;font-size:12px;border-radius:8px}
.icon-btn{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text-2);transition:all .15s}
.icon-btn:hover{color:var(--text);border-color:#3a3a40}

/* SYNC STATUS */
.sync-status{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:99px;background:var(--card);border:1px solid var(--border);font-size:11px;color:var(--text-2)}
.sync-status .dot{width:7px;height:7px;border-radius:50%;background:var(--text-3)}
.sync-status.online .dot{background:var(--success);box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 2s infinite}
.sync-status.offline .dot{background:var(--warn)}
.sync-status.error .dot{background:var(--danger)}

/* SECTION TABS (light addition: feels native to existing design) */
.tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:6px;margin-bottom:18px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:9px 14px;border-radius:9px;font-size:13px;font-weight:500;color:var(--text-2);cursor:pointer;white-space:nowrap;transition:all .15s;display:inline-flex;align-items:center;gap:8px}
.tab:hover{color:var(--text);background:var(--card-2)}
.tab.active{background:var(--card-2);color:var(--text);box-shadow:0 0 0 1px var(--border-2)}
.tab svg{width:14px;height:14px}

.view{display:none}
.view.active{display:block;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* HERO */
.hero{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-bottom:18px}
@media(max-width:880px){.hero{grid-template-columns:1fr}}

.identity-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:32px;position:relative;overflow:hidden}
.identity-card::before{content:"";position:absolute;inset:-40% -10% auto auto;width:380px;height:380px;background:radial-gradient(closest-side,rgba(59,130,246,.18),transparent 70%);pointer-events:none}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--text-3);font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:500;margin-bottom:14px}
.eyebrow .pulse{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 10px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.name{font-size:48px;font-weight:700;letter-spacing:-.035em;line-height:1;margin:0 0 6px}
@media(max-width:720px){.name{font-size:36px}}
.subtitle{color:var(--text-2);font-size:15px;font-weight:400;margin:0 0 22px}
.date-row{display:flex;align-items:baseline;gap:14px;color:var(--text-2);font-size:14px;margin-bottom:24px;flex-wrap:wrap}
.date-row .day{color:var(--text);font-weight:600}
.quote{border-left:2px solid var(--accent);padding:12px 0 12px 16px;color:var(--text-2);font-size:15px;line-height:1.55;font-style:italic;max-width:560px}
.quote strong{color:var(--text);font-style:normal}

/* SCORE CARD */
.score-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}
.ring-wrap{position:relative;width:200px;height:200px;margin:8px 0 14px}
.ring{transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:14;stroke-linecap:round}
.ring .track{stroke:#1f1f22}
.ring .fill{stroke:var(--accent);transition:stroke-dashoffset .8s cubic-bezier(.2,.8,.2,1),stroke .4s}
.ring-label{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
.ring-label .num{font-size:54px;font-weight:700;letter-spacing:-.04em;font-family:'JetBrains Mono',monospace}
.ring-label .pct{color:var(--text-3);font-size:12px;letter-spacing:.18em;text-transform:uppercase;margin-top:2px}
.score-meta{display:flex;gap:20px;color:var(--text-2);font-size:12px}
.score-meta b{color:var(--text);font-weight:600;display:block;font-size:18px;font-family:'JetBrains Mono',monospace;letter-spacing:-.01em}
.score-meta .col{text-align:center}

/* MISSION */
.mission{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:28px;margin-bottom:18px}
.mission-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.mission-title{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--text-3);font-weight:500}
.mission-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:22px}
@media(max-width:880px){.mission-grid{grid-template-columns:repeat(2,1fr)}}
.goal{background:var(--card-2);border:1px solid var(--border-2);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:6px}
.goal .num{font-size:22px;font-weight:700;letter-spacing:-.02em;font-family:'JetBrains Mono',monospace}
.goal .lbl{font-size:12px;color:var(--text-2);line-height:1.35}
.identity-line{font-size:18px;line-height:1.45;color:var(--text);font-weight:500;letter-spacing:-.01em;max-width:780px}
.identity-line .quiet{color:var(--text-3)}

/* SECTIONS / GRID */
.grid{display:grid;gap:18px}
.grid.cols-2{grid-template-columns:1.3fr 1fr}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-2-eq{grid-template-columns:1fr 1fr}
@media(max-width:980px){.grid.cols-2,.grid.cols-3,.grid.cols-2-eq{grid-template-columns:1fr}}
.row{margin-bottom:18px}
.card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:22px}
.card h3{margin:0 0 4px;font-size:16px;font-weight:600;letter-spacing:-.01em}
.card .desc{color:var(--text-3);font-size:13px;margin-bottom:16px}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;background:var(--card-2);border:1px solid var(--border-2);font-size:11px;color:var(--text-2);font-weight:500}
.pill.acc{background:var(--accent-soft);border-color:rgba(59,130,246,.25);color:#93c5fd}
.pill.suc{background:var(--success-soft);border-color:rgba(34,197,94,.25);color:#86efac}
.pill.dgr{background:var(--danger-soft);border-color:rgba(239,68,68,.25);color:#fca5a5}
.pill.warn{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.25);color:#fcd34d}

/* TODAY block */
.today-card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:22px}
.today-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.today-head h3{margin:0;font-size:18px;letter-spacing:-.01em}
.today-sub{color:var(--text-3);font-size:13px;margin-bottom:18px;display:flex;gap:10px;align-items:center}
.today-event{background:linear-gradient(180deg,rgba(59,130,246,.10),rgba(59,130,246,.04));border:1px solid rgba(59,130,246,.25);border-radius:14px;padding:14px 16px;margin-bottom:14px;display:flex;align-items:center;gap:14px}
.today-event .ev-icon{width:38px;height:38px;border-radius:10px;background:var(--accent);display:grid;place-items:center;flex:none}
.today-event .ev-icon svg{width:20px;height:20px;color:#fff}
.today-event .ev-title{font-weight:600;font-size:14px}
.today-event .ev-meta{color:var(--text-2);font-size:12px;margin-top:2px}

/* HABITS / TASKS */
.habit{display:flex;align-items:center;gap:14px;padding:13px 14px;border-radius:12px;border:1px solid transparent;transition:all .15s;cursor:pointer;user-select:none;position:relative}
.habit + .habit{margin-top:6px}
.habit:hover{background:var(--card-2)}
.habit.done{background:rgba(34,197,94,.06);border-color:rgba(34,197,94,.18)}
.habit .check{width:24px;height:24px;border-radius:8px;border:1.5px solid #3a3a40;display:grid;place-items:center;flex:none;transition:all .2s}
.habit.done .check{background:var(--success);border-color:var(--success)}
.habit .check svg{width:14px;height:14px;color:#fff;opacity:0;transform:scale(.5);transition:all .2s}
.habit.done .check svg{opacity:1;transform:scale(1)}
.habit .h-icon{width:34px;height:34px;border-radius:9px;background:var(--card-2);border:1px solid var(--border-2);display:grid;place-items:center;flex:none;color:var(--text-2)}
.habit .h-body{flex:1;min-width:0}
.habit .h-title{font-size:14px;font-weight:500;letter-spacing:-.005em}
.habit.done .h-title{color:var(--text-2);text-decoration:line-through;text-decoration-color:#3f3f46}
.habit .h-sub{font-size:12px;color:var(--text-3);margin-top:1px}
.habit .h-cat{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.habit .h-actions{display:none;gap:4px}
.habit:hover .h-actions{display:flex}
.habit .h-actions button{width:28px;height:28px;border-radius:7px;background:var(--card);border:1px solid var(--border);display:grid;place-items:center;color:var(--text-2)}
.habit .h-actions button:hover{color:var(--text);border-color:#3a3a40}

/* TASK ADD ROW */
.task-add{display:flex;gap:8px;margin-top:12px;padding:10px;background:var(--card-2);border:1px solid var(--border-2);border-radius:12px}
.task-add input,.task-add select{flex:1;background:transparent;border:0;outline:none;color:var(--text);font-size:14px;padding:6px 8px}
.task-add select{flex:0 0 auto;color:var(--text-2);background:var(--card);border:1px solid var(--border);border-radius:8px;padding:6px 10px}
.task-add button{flex:0 0 auto}

/* WEEK PLAN */
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
@media(max-width:720px){.week{grid-template-columns:repeat(7,1fr);gap:6px}}
.day-cell{background:var(--card-2);border:1px solid var(--border-2);border-radius:12px;padding:12px 10px;min-height:130px;display:flex;flex-direction:column;gap:8px;position:relative;transition:all .2s}
.day-cell.today{border-color:var(--accent);background:linear-gradient(180deg,rgba(59,130,246,.08),rgba(59,130,246,.02))}
.day-cell .dn{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.day-cell.today .dn{color:#93c5fd}
.day-cell .dnum{font-size:18px;font-weight:600;letter-spacing:-.02em;font-family:'JetBrains Mono',monospace}
.day-cell .ev{font-size:11px;line-height:1.3;color:var(--text-2);padding:5px 7px;border-radius:6px;background:rgba(255,255,255,.03);border:1px solid var(--border-2)}
.day-cell .ev.gym{color:#fca5a5;border-color:rgba(239,68,68,.18);background:rgba(239,68,68,.05)}
.day-cell .ev.foot{color:#86efac;border-color:rgba(34,197,94,.18);background:rgba(34,197,94,.05)}
.day-cell .ev.swim{color:#93c5fd;border-color:rgba(59,130,246,.22);background:rgba(59,130,246,.06)}
.day-cell .ev.faith{color:#fcd34d;border-color:rgba(245,158,11,.2);background:rgba(245,158,11,.05)}

/* STREAKS */
.streak-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:720px){.streak-grid{grid-template-columns:repeat(2,1fr)}}
.streak{background:var(--card-2);border:1px solid var(--border-2);border-radius:14px;padding:16px;position:relative;overflow:hidden}
.streak .lbl{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);font-weight:600;margin-bottom:10px}
.streak .big{font-size:38px;font-weight:700;letter-spacing:-.04em;font-family:'JetBrains Mono',monospace;line-height:1}
.streak .big small{font-size:12px;color:var(--text-3);letter-spacing:0;margin-left:6px;font-weight:500;font-family:'Inter',sans-serif}
.streak .best{font-size:12px;color:var(--text-3);margin-top:8px;display:flex;justify-content:space-between;align-items:center}
.streak .best b{color:var(--text-2);font-weight:500}
.streak .flame{position:absolute;top:14px;right:14px;color:#3f3f46}
.streak.hot .flame{color:var(--warn)}
.streak.hot .big{color:#fef3c7}

/* FIELDS */
.weight-row{display:grid;grid-template-columns:1.1fr 1fr;gap:12px;margin-bottom:14px}
@media(max-width:720px){.weight-row{grid-template-columns:1fr}}
.field{background:var(--card-2);border:1px solid var(--border-2);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.field label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.field input,.field textarea,.field select{background:transparent;border:0;outline:none;color:var(--text);font-size:18px;font-weight:600;letter-spacing:-.01em;font-family:'JetBrains Mono',monospace;padding:0}
.field textarea{font-family:'Inter',sans-serif;font-weight:400;font-size:14px;line-height:1.55;min-height:80px}
.field .unit{color:var(--text-3);font-size:13px;font-weight:500;font-family:'Inter',sans-serif}
.field-row{display:flex;align-items:baseline;gap:8px}
.progress-num{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}
.progress-num b{font-size:22px;font-weight:700;letter-spacing:-.02em;font-family:'JetBrains Mono',monospace}
.progress-num span{color:var(--text-3);font-size:12px}
.bar{height:8px;border-radius:99px;background:#1f1f22;overflow:hidden;position:relative}
.bar > i{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.bar.suc > i{background:var(--success)}
.bar.warn > i{background:var(--warn)}

/* HEATMAP */
.heat{display:grid;grid-template-columns:repeat(15,1fr);gap:5px}
@media(max-width:880px){.heat{grid-template-columns:repeat(10,1fr)}}
.heat .cell{aspect-ratio:1/1;border-radius:4px;background:#161618;border:1px solid #1f1f22;position:relative;cursor:default}
.heat .cell[data-l="1"]{background:rgba(59,130,246,.18);border-color:rgba(59,130,246,.25)}
.heat .cell[data-l="2"]{background:rgba(59,130,246,.4);border-color:rgba(59,130,246,.5)}
.heat .cell[data-l="3"]{background:rgba(59,130,246,.7);border-color:rgba(59,130,246,.8)}
.heat .cell[data-l="4"]{background:#3b82f6;border-color:#60a5fa}
.heat .cell.today{outline:1.5px solid var(--text);outline-offset:1px}
.heat-legend{display:flex;align-items:center;gap:8px;margin-top:14px;color:var(--text-3);font-size:11px}
.heat-legend .lc{width:12px;height:12px;border-radius:3px}

/* CHART */
.chart-wrap{height:220px;position:relative}

/* JOURNAL */
.journal-card textarea, .reflect textarea{width:100%;background:var(--card-2);border:1px solid var(--border-2);border-radius:12px;padding:14px;color:var(--text);font-size:14px;line-height:1.6;outline:none;transition:border-color .15s}
.journal-card textarea:focus,.reflect textarea:focus{border-color:#3a3a40}
.reflect{display:grid;gap:10px}
.reflect .field{padding:14px}

/* LEVEL */
.level-card{display:flex;align-items:center;gap:18px}
.level-badge{width:64px;height:64px;border-radius:16px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);display:grid;place-items:center;flex:none;font-weight:700;font-size:24px;letter-spacing:-.02em;font-family:'JetBrains Mono',monospace;color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.06) inset, 0 8px 24px rgba(59,130,246,.25)}
.level-info{flex:1;min-width:0}
.level-info .ttl{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.level-info .nm{font-size:18px;font-weight:600;letter-spacing:-.01em;margin-top:2px}
.level-info .nm small{color:var(--text-3);font-weight:400;margin-left:8px;font-size:13px}
.level-info .bar{margin-top:10px}
.level-info .xp{display:flex;justify-content:space-between;color:var(--text-3);font-size:11px;margin-top:6px;font-family:'JetBrains Mono',monospace}

/* CONFETTI */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:80}
.confetti i{position:absolute;width:8px;height:14px;border-radius:2px;animation:fall 1.6s linear forwards;top:-20px}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:0}}

/* TOAST */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--card);border:1px solid var(--border);padding:10px 16px;border-radius:12px;font-size:13px;color:var(--text);opacity:0;pointer-events:none;transition:all .3s;z-index:90;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* MODAL */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-bg.show{display:flex}
.modal{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:28px;max-width:520px;width:100%;animation:pop .25s cubic-bezier(.2,.8,.2,1)}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}
.modal h3{margin:0 0 8px;font-size:18px}
.modal p{color:var(--text-2);font-size:14px;line-height:1.55;margin:0 0 18px}
.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
.modal .field{margin-bottom:10px}
.modal .field input, .modal .field select, .modal .field textarea{font-size:15px;font-family:inherit;font-weight:500}

/* AI COACH */
.coach{display:flex;flex-direction:column;gap:10px}
.coach .msg{background:var(--card-2);border:1px solid var(--border-2);border-radius:12px;padding:14px;display:flex;gap:12px;align-items:flex-start;line-height:1.5;font-size:14px;color:var(--text-2)}
.coach .msg .av{width:32px;height:32px;border-radius:9px;flex:none;display:grid;place-items:center;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff}
.coach .msg.suc{border-color:rgba(34,197,94,.25);background:rgba(34,197,94,.04)}
.coach .msg.warn{border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.04)}
.coach .msg.dgr{border-color:rgba(239,68,68,.22);background:rgba(239,68,68,.04)}
.coach .msg b{color:var(--text);font-weight:600}

/* WORKOUT LOGS */
.log-list{display:flex;flex-direction:column;gap:8px}
.log-item{padding:12px 14px;background:var(--card-2);border:1px solid var(--border-2);border-radius:12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.log-item .meta{font-size:11px;color:var(--text-3);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;font-weight:600}
.log-item .body{font-size:13px;color:var(--text-2);line-height:1.5;white-space:pre-wrap}

/* MEAL list */
.meal-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.meal-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--card-2);border:1px solid var(--border-2);border-radius:10px;font-size:13px}
.meal-item .nm{font-weight:500}
.meal-item .nums{display:flex;gap:14px;color:var(--text-3);font-family:'JetBrains Mono',monospace;font-size:12px}
.meal-item .nums b{color:var(--text-2);font-weight:500}
.meal-item .x{color:var(--text-3);width:24px;height:24px;border-radius:6px;display:grid;place-items:center}
.meal-item .x:hover{color:var(--danger);background:rgba(239,68,68,.08)}

/* SECTION HEADER */
.section-h{display:flex;align-items:flex-end;justify-content:space-between;margin:8px 4px 14px}
.section-h .t{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--text-3);font-weight:600}

/* FOCUS MODE */
body.focus .focus-hide{display:none !important}
body.focus .focus-only-banner{display:flex}
.focus-only-banner{display:none;align-items:center;justify-content:center;gap:10px;padding:8px 14px;border:1px solid rgba(59,130,246,.3);background:rgba(59,130,246,.08);border-radius:10px;color:#93c5fd;font-size:12px;margin-bottom:14px;letter-spacing:.04em}

svg.ico{width:18px;height:18px;stroke-width:1.6;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round}
svg.ico-sm{width:14px;height:14px;stroke-width:1.8;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* ============================================================
   FullCalendar overrides — match dark theme & rounded cards
   ============================================================ */
#calendarMount{padding:6px}
.fc{--fc-border-color:var(--border-2);--fc-page-bg-color:transparent;--fc-neutral-bg-color:var(--card-2);--fc-list-event-hover-bg-color:var(--card-2);--fc-today-bg-color:rgba(59,130,246,.08);--fc-button-bg-color:var(--card-2);--fc-button-border-color:var(--border);--fc-button-hover-bg-color:var(--card);--fc-button-hover-border-color:#3a3a40;--fc-button-active-bg-color:var(--accent);--fc-button-active-border-color:var(--accent);--fc-event-bg-color:var(--accent);--fc-event-border-color:var(--accent);--fc-event-text-color:#fff;color:var(--text);font-family:inherit}
.fc .fc-toolbar-title{font-size:18px;font-weight:600;letter-spacing:-.01em}
.fc .fc-button{border-radius:9px !important;font-size:12px !important;font-weight:500 !important;padding:7px 12px !important;text-transform:capitalize;box-shadow:none !important}
.fc .fc-col-header-cell-cushion,.fc .fc-daygrid-day-number,.fc .fc-list-day-cushion a{color:var(--text-2);text-decoration:none;font-size:12px;font-weight:500}
.fc .fc-daygrid-day-number{padding:6px 8px;font-family:'JetBrains Mono',monospace}
.fc-theme-standard td,.fc-theme-standard th{border-color:var(--border-2)}
.fc-theme-standard .fc-scrollgrid{border-color:var(--border-2);border-radius:12px;overflow:hidden}
.fc-day-today .fc-daygrid-day-number{color:var(--text);font-weight:700}
.fc-event{border-radius:6px !important;padding:2px 6px !important;font-size:11.5px !important;font-weight:500 !important;border:0 !important}
.fc-list-event-title a{color:var(--text)}
.fc-list-day-cushion{background:var(--card-2) !important}
.fc-popover{background:var(--card) !important;border:1px solid var(--border) !important;border-radius:12px !important;color:var(--text)}
.fc-timegrid-slot,.fc-timegrid-axis-cushion{color:var(--text-3) !important;font-size:11px}

/* Footer */
.app-foot{text-align:center;color:var(--text-3);font-size:11px;letter-spacing:.18em;text-transform:uppercase;margin-top:30px}

/* PWA install prompt */
.install-prompt{position:fixed;bottom:14px;left:14px;right:14px;max-width:380px;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;display:none;align-items:center;gap:12px;z-index:80;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.install-prompt.show{display:flex}
.install-prompt .ip-body{flex:1;font-size:13px;color:var(--text-2)}
.install-prompt .ip-body b{color:var(--text)}
