/* SENTINEL — life command hub, Fight-Habits design language */
:root{
  --bg:#14110D;
  --card:#1F1A14;
  --cream:#2A241D;
  --border:#3A2E25;
  --gold:#D4AA45;
  --gold-light:#E5BD5A;
  --gold-soft:rgba(212,170,69,.13);
  --gold-glow:rgba(212,170,69,.5);
  --ink:#F5F0E8;
  --ink-mid:#B0A89C;
  --ink-mute:#7A7066;
  --green:#6BB87C;
  --red:#D9523F;
  --purple:#9B7FC8;
  --blue:#5A93C8;
  --orange:#D97A2A;
  --shadow:0 2px 12px rgba(0,0,0,.4);
  --shadow-lg:0 8px 32px rgba(0,0,0,.55);
  --topbar-bg:rgba(20,17,13,.85);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{background:var(--bg)}
body{
  min-height:100vh;color:var(--ink);
  font-family:'DM Sans',system-ui,sans-serif;font-weight:400;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(ellipse 60% 50% at 0% 0%, rgba(212,170,69,.07), transparent 70%),
    radial-gradient(ellipse 55% 50% at 100% 100%, rgba(126,184,212,.04), transparent 70%),
    var(--bg);
  display:flex;flex-direction:column;align-items:center;
}
button{font-family:inherit;background:none;border:none;color:inherit;cursor:pointer}
input,textarea{font-family:inherit;color:inherit}

/* ---------- topbar ---------- */
header{
  position:sticky;top:0;z-index:20;width:100%;
  background:var(--topbar-bg);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
}
.topbar{max-width:560px;margin:0 auto;height:56px;display:flex;align-items:center;gap:12px;padding:0 18px}
.wordmark{font-family:'Bebas Neue',sans-serif;font-size:21px;letter-spacing:3.5px;color:var(--ink)}
.wordmark .dot{color:var(--gold)}
.top-status{display:flex;align-items:center;gap:6px;font-size:9px;letter-spacing:1.5px;color:var(--ink-mute);text-transform:uppercase}
.link-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-mute);transition:background .25s ease}
.link-dot.up{background:var(--green);box-shadow:0 0 8px rgba(107,184,124,.6)}
.link-dot.down{background:var(--red)}
.top-clock{margin-left:auto;display:flex;align-items:baseline;gap:9px}
.top-clock #top-date{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;color:var(--ink-mid)}
.top-clock b{font-family:'Bebas Neue',sans-serif;font-size:20px;font-weight:400;letter-spacing:1.5px;color:var(--ink)}
.top-clock small{font-size:8px;letter-spacing:2px;color:var(--ink-mute)}

/* ---------- main ---------- */
main{flex:1;width:100%;max-width:560px;padding:16px 16px calc(110px + var(--safe-bottom))}
.page-anim{animation:up .28s ease}
@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.loading{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:16px;color:var(--ink-mute);text-align:center;padding:80px 0}

/* section header */
.sh{display:flex;align-items:center;gap:10px;margin:18px 2px 10px}
.sh:first-child{margin-top:2px}
.sh-label{font-size:9px;letter-spacing:2px;color:var(--gold);font-weight:600;text-transform:uppercase}
.sh-line{flex:1;height:1px;background:linear-gradient(to right,var(--gold) 0%,transparent 100%);opacity:.5}

/* cards */
.card{
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:16px;box-shadow:var(--shadow);position:relative;overflow:hidden;margin-bottom:12px;
}

/* day progress */
.day-prog{display:flex;align-items:center;gap:10px;padding:2px 4px 12px}
.day-prog-bar{flex:1;height:6px;background:var(--cream);border-radius:3px;overflow:hidden;border:1px solid var(--border)}
.day-prog-fill{height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-light));border-radius:3px;transition:width .8s ease}
.day-prog-text{font-family:'Bebas Neue',sans-serif;font-size:11px;letter-spacing:1.2px;color:var(--ink-mute);white-space:nowrap}
.day-prog-text b{color:var(--gold);font-weight:600}

/* NOW card */
.now-card{border-top:3px solid var(--gold)}
.now-card::after{content:"";position:absolute;top:-30px;right:-30px;width:140px;height:140px;background:radial-gradient(circle,var(--gold-soft),transparent 65%);pointer-events:none}
.now-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 var(--gold-soft)}50%{box-shadow:0 0 0 8px rgba(212,170,69,0)}}
.now-label{font-size:9px;letter-spacing:2.5px;color:var(--gold);font-weight:700;text-transform:uppercase}
.now-time{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--ink-mute);margin-bottom:4px}
.now-name{font-family:'Bebas Neue',sans-serif;font-size:32px;letter-spacing:1.5px;line-height:1.05;color:var(--ink);margin-bottom:8px}
.now-name.idle{color:var(--ink-mid)}
.now-divider{height:1px;background:var(--border);margin:13px 0 9px}
.next-label{font-size:8.5px;letter-spacing:2px;color:var(--ink-mute);text-transform:uppercase;margin-bottom:5px}
.next-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.next-left{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.next-name{font-family:'Bebas Neue',sans-serif;font-size:17px;letter-spacing:1px;color:var(--ink-mid);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.next-time{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12px;color:var(--ink-mute)}

/* countdown pill */
.cd-pill{display:flex;align-items:center;gap:6px;font-family:ui-monospace,monospace;font-size:11px;background:var(--cream);border:1px solid var(--border);padding:5px 11px;border-radius:14px;letter-spacing:.4px;font-weight:600;white-space:nowrap;flex-shrink:0;color:var(--ink-mid)}
.cd-dot{width:8px;height:8px;border-radius:50%;background:var(--ink-mute);flex-shrink:0}
.cd-pill.far{color:var(--green);border-color:rgba(107,184,124,.4);background:rgba(107,184,124,.08)}
.cd-pill.far .cd-dot{background:var(--green);box-shadow:0 0 8px rgba(107,184,124,.55)}
.cd-pill.mid{color:var(--orange);border-color:rgba(217,122,42,.45);background:rgba(217,122,42,.08)}
.cd-pill.mid .cd-dot{background:var(--orange);box-shadow:0 0 8px rgba(217,122,42,.55)}
.cd-pill.near{color:var(--red);border-color:rgba(217,82,63,.45);background:rgba(217,82,63,.08)}
.cd-pill.near .cd-dot{background:var(--red);box-shadow:0 0 10px rgba(217,82,63,.65);animation:pulse-near 1s ease-in-out infinite}
.cd-pill.live{color:var(--gold);border-color:var(--gold);background:var(--gold-soft)}
.cd-pill.live .cd-dot{background:var(--gold);box-shadow:0 0 12px var(--gold);animation:pulse-near .9s ease-in-out infinite}
@keyframes pulse-near{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}

/* timeline */
.tl-wrap{margin-top:14px}
.tl-track{position:relative;height:30px;border-radius:8px;background:var(--cream);border:1px solid var(--border)}
.tl-block{position:absolute;top:4px;bottom:4px;border-radius:5px;background:var(--gold-soft);border:1px solid rgba(212,170,69,.4)}
.tl-block.past{opacity:.3}
.tl-block.live{background:var(--gold);border-color:var(--gold-light);box-shadow:0 0 14px var(--gold-glow)}
.tl-now{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--gold);box-shadow:0 0 12px var(--gold);border-radius:1px}
.tl-now::before{content:"";position:absolute;top:-4px;left:-3.5px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px var(--card),0 0 12px var(--gold)}
.tl-hours{display:flex;justify-content:space-between;font-family:ui-monospace,monospace;font-size:9px;color:var(--ink-mute);margin-top:6px;padding:0 1px}
.tl-legend{display:flex;flex-wrap:wrap;gap:5px 16px;margin-top:10px}
.tl-leg{font-size:12px;color:var(--ink-mid)}
.tl-leg b{font-family:'Bebas Neue',sans-serif;font-weight:400;letter-spacing:.8px;color:var(--gold);margin-right:6px}
.tl-leg.past{opacity:.4}
.tl-leg.live{color:var(--ink)}

/* up next list */
.up-row{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);align-items:baseline}
.up-row:last-child{border-bottom:none;padding-bottom:2px}
.up-row:first-child{padding-top:2px}
.up-when{font-family:'Bebas Neue',sans-serif;font-size:13px;letter-spacing:1px;color:var(--gold);min-width:96px}
.up-title{font-size:13.5px;color:var(--ink);flex:1}
.up-title .loc{display:block;font-size:11px;color:var(--ink-mute)}
.up-src{font-size:7.5px;letter-spacing:1.5px;color:var(--ink-mute);text-transform:uppercase;border:1px solid var(--border);border-radius:8px;padding:2px 7px}

/* brief */
.sitrep-body{font-size:13.5px;line-height:1.75;white-space:pre-wrap;color:var(--ink-mid)}
.sitrep-body.clamped{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.brief-toggle{margin-top:12px;width:100%;padding:10px;border-radius:10px;background:var(--cream);border:1px solid var(--border);color:var(--ink-mid);font-family:'Bebas Neue',sans-serif;font-size:12px;letter-spacing:1.5px}
.brief-toggle:active{transform:scale(.98)}
.sitrep-stale{margin-top:10px;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12.5px;color:var(--ink-mute)}

/* ---------- progress ---------- */
.big-stat{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.big-num{font-family:'Bebas Neue',sans-serif;font-size:42px;letter-spacing:1px;color:var(--ink);line-height:1}
.big-unit{font-family:'Bebas Neue',sans-serif;font-size:18px;color:var(--ink-mute)}
.delta{font-size:12px;font-weight:500;padding:3px 9px;border-radius:10px}
.delta.down{color:var(--green);background:rgba(107,184,124,.1)}
.delta.up{color:var(--red);background:rgba(217,82,63,.1)}
.delta.flat{color:var(--ink-mute);background:var(--cream)}
.prog-row{display:flex;align-items:center;gap:10px;margin:10px 0 4px}
.prog-bar{flex:1;height:8px;background:var(--cream);border-radius:4px;overflow:hidden;border:1px solid var(--border)}
.prog-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--gold),var(--gold-light));transition:width .8s ease}
.prog-fill.green{background:linear-gradient(90deg,var(--green),#7fcf91)}
.prog-pct{font-family:'Bebas Neue',sans-serif;font-size:13px;letter-spacing:1px;color:var(--gold)}
.card-sub{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;color:var(--ink-mute)}
.card-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.card-title{font-family:'Bebas Neue',sans-serif;font-size:16px;letter-spacing:1.5px;color:var(--ink)}

.chart-wrap{width:100%;overflow:hidden;margin-top:6px}
.chart-wrap svg{display:block;width:100%;height:auto}
.chart-caption{font-size:10px;color:var(--ink-mute);margin-top:6px;display:flex;justify-content:space-between;font-family:'Cormorant Garamond',serif;font-style:italic}

.cons-grid{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.cons-cell{width:31px}
.cons-box{height:31px;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:'Bebas Neue',sans-serif;font-size:12px;color:var(--ink-mute);background:var(--cream)}
.cons-box.full{background:linear-gradient(135deg,var(--gold),var(--gold-light));color:#14110D;border-color:var(--gold)}
.cons-box.partial{border-color:var(--gold);color:var(--gold)}
.cons-date{font-size:8px;color:var(--ink-mute);text-align:center;margin-top:3px}

.fact-row{padding:8px 0;border-bottom:1px solid var(--border);display:flex;gap:12px;align-items:baseline;font-size:12.5px;color:var(--ink-mid)}
.fact-row:last-child{border-bottom:none}
.fact-cat{font-size:8px;letter-spacing:1.5px;color:var(--gold);text-transform:uppercase;min-width:70px;font-weight:600}
.pill{margin-left:auto;font-size:8px;letter-spacing:1px;border-radius:8px;padding:2px 8px;text-transform:uppercase}
.pill.ok{color:var(--green);background:rgba(107,184,124,.1)}
.pill.dim{color:var(--ink-mute);background:var(--cream)}

/* ---------- plan ---------- */
.mrow{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}
.mrow:last-child{border-bottom:none}
.m-check{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:transparent;transition:all .15s ease}
.m-check:hover{border-color:var(--gold)}
.m-check.done{background:var(--green);border-color:var(--green);color:#fff}
.mrow .mtitle{font-size:13.5px;flex:1;color:var(--ink)}
.mrow .mtitle .mmeta{display:block;font-size:11px;color:var(--ink-mute);margin-top:2px;font-family:'Cormorant Garamond',serif;font-style:italic}
.mrow.done .mtitle{text-decoration:line-through;color:var(--ink-mute)}
.item-del{color:var(--ink-mute);font-size:12px;padding:4px 6px;flex-shrink:0}
.item-del:hover{color:var(--red)}
.form-row{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.form-row input{background:var(--cream);border:1px solid var(--border);border-radius:10px;color:var(--ink);font-size:13px;padding:10px 12px;flex:1;min-width:100px}
.form-row input:focus{outline:none;border-color:var(--gold)}
.btn-gold{background:linear-gradient(135deg,var(--gold),var(--gold-light));color:#14110D;border:none;border-radius:10px;font-family:'Bebas Neue',sans-serif;font-size:14px;letter-spacing:1.5px;padding:9px 20px;box-shadow:0 4px 14px rgba(212,170,69,.25)}
.btn-gold:active{transform:scale(.97)}

.week-strip{display:flex;flex-direction:column;gap:0}
.srow{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--border);align-items:baseline}
.srow:last-child{border-bottom:none}
.srow .stime{font-family:'Bebas Neue',sans-serif;font-size:14px;letter-spacing:.8px;color:var(--gold);min-width:86px}
.srow .stitle{font-size:13px;color:var(--ink);flex:1}
.srow .sdays{font-size:9px;letter-spacing:1px;color:var(--ink-mute)}

.floor-toggle{width:100%;padding:11px;border-radius:12px;background:var(--card);border:1px solid var(--border);color:var(--ink-mid);font-family:'Bebas Neue',sans-serif;font-size:12px;letter-spacing:1.8px;margin-bottom:12px;box-shadow:var(--shadow)}
.floor-toggle.open{color:var(--gold);border-color:var(--gold-soft)}

.week-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.day-col{border:1px solid var(--border);border-radius:12px;padding:9px 9px;background:var(--card)}
.day-col.today{border-color:var(--gold);box-shadow:0 0 16px var(--gold-soft)}
.day-head{font-family:'Bebas Neue',sans-serif;font-size:13px;letter-spacing:1.5px;color:var(--ink-mid);padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:baseline}
.day-col.today .day-head{color:var(--gold)}
.day-today-tag{font-size:7px;letter-spacing:1.2px;color:var(--gold)}
.class-block{border:1px solid var(--border);border-radius:9px;padding:6px 8px;margin-bottom:5px;background:var(--cream)}
.class-block .cb-time{font-family:'Bebas Neue',sans-serif;font-size:11px;letter-spacing:.6px;color:var(--ink-mute)}
.class-block .cb-title{font-size:10.5px;line-height:1.3;color:var(--ink-mid);margin-top:2px}
.class-block.mine{border-color:rgba(212,170,69,.45);background:var(--gold-soft)}
.class-block.mine .cb-time{color:var(--gold)}
.class-block.mine .cb-title{color:var(--ink)}

/* ---------- log ---------- */
.search-row{margin-bottom:12px;display:flex;gap:6px;flex-wrap:wrap}
.search-row input{flex:1 1 160px;background:var(--card);border:1px solid var(--border);border-radius:12px;color:var(--ink);font-size:13px;padding:10px 14px}
.search-row input:focus{outline:none;border-color:var(--gold)}
.filter-btn{background:var(--card);border:1px solid var(--border);border-radius:12px;color:var(--ink-mute);font-size:9px;letter-spacing:1.2px;padding:0 12px;text-transform:uppercase}
.filter-btn.active{border-color:var(--gold);color:var(--gold);background:var(--gold-soft)}

.log-row{padding:11px 0;border-bottom:1px solid var(--border)}
.log-row:last-child{border-bottom:none}
.log-meta{display:flex;gap:10px;align-items:baseline;margin-bottom:3px}
.log-when{font-family:'Bebas Neue',sans-serif;font-size:11px;letter-spacing:1px;color:var(--gold)}
.log-kind{font-size:8px;letter-spacing:1.5px;color:var(--ink-mute);text-transform:uppercase}
.log-text{font-size:13px;line-height:1.6;color:var(--ink-mid);white-space:pre-wrap}
.log-text .you{color:var(--gold);font-weight:500}

.intel-row{border-bottom:1px solid var(--border)}
.intel-row:last-child{border-bottom:none}
.intel-head{width:100%;text-align:left;display:flex;justify-content:space-between;align-items:baseline;padding:12px 2px}
.intel-head .d{font-family:'Bebas Neue',sans-serif;font-size:15px;letter-spacing:1.2px;color:var(--ink)}
.intel-head:hover .d{color:var(--gold)}
.intel-head .arrow{color:var(--ink-mute);font-size:10px;transition:transform .2s ease}
.intel-row.open .intel-head .arrow{transform:rotate(45deg);color:var(--gold)}
.intel-body{display:none;padding:0 2px 16px}
.intel-row.open .intel-body{display:block}
.intel-row.open .intel-head .d{color:var(--gold)}

.empty{padding:16px 2px;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:15px;color:var(--ink-mute)}

/* ---------- dock ---------- */
#dock{
  position:fixed;bottom:calc(14px + var(--safe-bottom));left:50%;transform:translateX(-50%);z-index:30;
  display:flex;gap:2px;width:calc(100% - 96px);max-width:400px;
  background:rgba(31,26,20,.92);
  border:1px solid var(--border);border-radius:18px;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  box-shadow:var(--shadow-lg);
  padding:6px;
}
#dock .nav-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  font-family:'Bebas Neue',sans-serif;font-size:11px;letter-spacing:1.5px;
  color:var(--ink-mute);padding:8px 4px 7px;border-radius:13px;transition:all .2s ease;
}
#dock .nav-btn .nb-ico{font-size:8px;color:var(--ink-mute);transition:color .2s ease}
#dock .nav-btn.active{background:var(--gold-soft);color:var(--gold)}
#dock .nav-btn.active .nb-ico{color:var(--gold)}

/* ---------- comms ---------- */
#comms-fab{
  position:fixed;right:18px;bottom:calc(18px + var(--safe-bottom));z-index:30;
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--gold),var(--gold-light));color:#14110D;
  font-size:17px;box-shadow:0 6px 22px rgba(212,170,69,.4);
  animation:fab-glow 2.6s ease-in-out infinite;
}
#comms-fab:active{transform:scale(.93)}
@keyframes fab-glow{
  0%,100%{box-shadow:0 6px 22px rgba(212,170,69,.35)}
  50%{box-shadow:0 8px 30px rgba(212,170,69,.6),0 0 26px var(--gold-glow)}
}

#comms-panel{
  position:fixed;right:14px;bottom:calc(14px + var(--safe-bottom));z-index:40;
  width:400px;max-width:calc(100vw - 28px);height:560px;max-height:82vh;
  background:var(--card);border:1px solid var(--border);border-radius:18px;
  box-shadow:var(--shadow-lg);
  display:flex;flex-direction:column;overflow:hidden;
}
#comms-panel.hidden{display:none}
.comms-head{display:flex;align-items:baseline;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--cream)}
.comms-title{font-family:'Bebas Neue',sans-serif;font-size:17px;letter-spacing:2.5px;color:var(--ink)}
.comms-sub{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12.5px;color:var(--ink-mute)}
#comms-close{margin-left:auto;color:var(--ink-mute);font-size:14px}
#comms-close:hover{color:var(--gold)}
#comms-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:9px}
.msg{max-width:86%;padding:9px 13px;font-size:13px;line-height:1.6;white-space:pre-wrap;border-radius:14px}
.msg.me{align-self:flex-end;background:var(--gold-soft);border:1px solid rgba(212,170,69,.3);color:var(--ink);border-bottom-right-radius:4px}
.msg.ai{align-self:flex-start;background:var(--cream);border:1px solid var(--border);color:var(--ink-mid);border-bottom-left-radius:4px}
.msg.pending{opacity:.5;font-family:'Cormorant Garamond',serif;font-style:italic}
.comms-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}
.comms-input input{flex:1;background:var(--cream);border:1px solid var(--border);border-radius:12px;font-size:13px;padding:10px 13px}
.comms-input input:focus{outline:none;border-color:var(--gold)}
.comms-input button{background:linear-gradient(135deg,var(--gold),var(--gold-light));color:#14110D;border-radius:12px;font-family:'Bebas Neue',sans-serif;font-size:13px;letter-spacing:1.5px;padding:0 18px}

.toast{
  position:fixed;bottom:calc(96px + var(--safe-bottom));left:50%;transform:translate(-50%,20px);
  background:linear-gradient(135deg,var(--gold),var(--gold-light));color:#14110D;
  font-family:'Bebas Neue',sans-serif;font-size:13px;letter-spacing:1.5px;border-radius:12px;
  padding:10px 24px;opacity:0;transition:all .25s;z-index:50;box-shadow:var(--shadow-lg);
}
.toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-width:480px){
  .now-name{font-size:27px}
  .big-num{font-size:36px}
  #dock{width:calc(100% - 88px);left:14px;transform:none}
}
