*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{font-family:Inter,system-ui,sans-serif;background:#0d0d0d;color:#f0f0f0;display:flex;flex-direction:column;font-size:14px}
button{font-family:inherit;cursor:pointer}
input,select,textarea{max-width:100%;min-width:0}

/* ── NAV ── */
#nav{height:auto;min-height:50px;background:#161616;border-bottom:1px solid #2e2e2e;display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top) 20px 0;flex-shrink:0}
.brand{font-size:11px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:#f0f0f0}
.tabs{display:flex;gap:2px}
.tab{padding:6px 14px;border-radius:8px;border:none;background:transparent;color:#555;font-size:12px;font-weight:500}
.tab:hover{background:#222;color:#aaa}
.tab.on{background:#2a2a2a;color:#f0f0f0}
.av{width:28px;height:28px;border-radius:50%;background:#2a2a2a;border:1px solid #333;display:flex;align-items:center;justify-content:center;font-size:11px;color:#888}

/* ── PAGES ── */
.page{display:none;flex-direction:column;flex:1;overflow:hidden}
.page.on{display:flex}

/* ── RANGE BAR ── */
#rbar{height:44px;background:#161616;border-bottom:1px solid #2e2e2e;display:flex;align-items:center;gap:6px;padding:0 20px;flex-shrink:0}
.vbtn{padding:5px 12px;border-radius:7px;border:1px solid #333;background:transparent;color:#888;font-size:11px;font-weight:500}
.vbtn:hover,.vbtn.on{background:#2a2a2a;color:#f0f0f0;border-color:#555}
.sep{width:1px;height:18px;background:#333;margin:0 4px}
.arr{width:28px;height:28px;border-radius:7px;border:1px solid #333;background:transparent;color:#888;font-size:15px;display:flex;align-items:center;justify-content:center}
.arr:hover{background:#2a2a2a;color:#f0f0f0}
#rlbl{font-size:12px;font-weight:500;color:#888;min-width:200px;text-align:center}
#tbtn{margin-left:auto;padding:5px 12px;border-radius:7px;border:1px solid #333;background:transparent;color:#888;font-size:11px}
#tbtn:hover{background:#2a2a2a;color:#f0f0f0}

/* ── SUMMARY BAR ── */
#sumbar{display:flex;gap:8px;align-items:center;padding:7px 20px;background:#141414;border-bottom:1px solid #242424;flex-wrap:wrap;flex-shrink:0}
.schip{font-size:10px;color:#999;background:#1e1e1e;border:1px solid #2e2e2e;border-radius:12px;padding:3px 10px;white-space:nowrap}
.schip.warn{color:#f59e0b;border-color:#f59e0b44}
.schip.risk{color:#ef4444;border-color:#ef444444}
.lm #sumbar{background:#fafafa;border-color:#e0e0e0}
.lm .schip{color:#666;background:#f0f0f0;border-color:#ddd}
.lm .schip.warn{color:#b45309;border-color:#f59e0b66}
.lm .schip.risk{color:#dc2626;border-color:#ef444466}
.fslider{display:flex;align-items:center;gap:7px;margin-left:auto;font-size:10px;color:#888;white-space:nowrap}
.fslider input[type=range]{width:120px;cursor:pointer;height:14px}
/* ── Color picker component ── */
.cpick{position:relative;width:38px;height:26px;border-radius:7px;border:2px solid #444;overflow:hidden;cursor:pointer;flex-shrink:0;transition:border-color .15s}
.cpick:hover{border-color:#888}
.cpick input[type=color]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.cpsave{padding:4px 10px;border:1px solid #333;border-radius:7px;background:#1e1e1e;color:#999;font-size:10px;font-family:inherit;cursor:pointer;flex-shrink:0}
.cpsave:hover{border-color:#666;color:#ddd}
.lm .cpick{border-color:#bbb}
.lm .cpick:hover{border-color:#666}
.lm .cpsave{border-color:#ccc;background:#f0f0f0;color:#666}
.lm .cpsave:hover{border-color:#999;color:#111}

.ftsp{padding:3px 9px;border:1px solid #2e2e2e;border-radius:12px;background:#1e1e1e;color:#999;font-size:10px;font-family:inherit;cursor:pointer}
.ftsp:hover{border-color:#555;color:#ddd}
.lm .ftsp{border-color:#ddd;background:#f0f0f0;color:#666}
.lm .ftsp:hover{border-color:#999;color:#111}
@media (max-width:600px){.fslider{margin-left:0;width:100%}}

/* ── TEMPLATE CHIPS ── */
#tplrow{display:none;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tplchip{display:flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #333;border-radius:14px;background:#1e1e1e;font-size:10px;color:#bbb;cursor:pointer;transition:border-color .15s,background .15s}
.tplchip:hover{border-color:#666;background:#2a2a2a}
.tplx{color:#555;font-size:9px;padding:0 0 0 2px}
.tplx:hover{color:#ef4444}
.lm .tplchip{border-color:#ccc;background:#f0f0f0;color:#444}
.lm .tplchip:hover{border-color:#888;background:#e8e8e8}
.lm .tplx{color:#999}

/* ── TIMELINE AREA ── */
#tlarea{flex:1;position:relative;overflow:hidden}
.dsc{width:100%;height:100%;overflow-x:auto;overflow-y:hidden;outline:none}
.dsc::-webkit-scrollbar{height:4px}
.dsc::-webkit-scrollbar-thumb{background:#333;border-radius:4px}
.wsc{width:100%;height:100%;overflow-y:auto}
.wsc::-webkit-scrollbar{width:4px}
.wsc::-webkit-scrollbar-thumb{background:#333;border-radius:4px}
.wrow{border-bottom:1px solid #222}
.whdr{display:flex;align-items:center;gap:8px;padding:5px 14px 3px;cursor:pointer}
.whdr:hover{background:#1a1a1a}
.wtl{height:76px;overflow-x:auto;overflow-y:hidden}
.wtl::-webkit-scrollbar{height:3px}
.wtl::-webkit-scrollbar-thumb{background:#333;border-radius:3px}
.msc{width:100%;height:100%;overflow-y:auto}
.msc::-webkit-scrollbar{width:4px}
.msc::-webkit-scrollbar-thumb{background:#333;border-radius:4px}
.mwk{border-bottom:1px solid #222;padding:8px 14px}
.mwh{font-size:10px;font-weight:700;color:#444;letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:2px 7px;border-radius:6px;border:1px solid transparent}
.mwh:hover{background:#1a1a1a;border-color:#333;color:#888}
.mdays{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.mday{border-radius:7px;padding:5px 6px;cursor:pointer;min-height:46px;border:1px solid #222}
.mday:hover{background:#1a1a1a}
.mday.tod{border-color:#444}
.mday.fad{opacity:.3}
.mdn{font-size:10px;font-weight:600;color:#666;margin-bottom:3px}
.mdn.tod{color:#f0f0f0}
.mdots{display:flex;flex-wrap:wrap;gap:2px}
.mdot{width:5px;height:5px;border-radius:50%}

/* ── LEGEND ── */
#leg{height:auto;min-height:34px;background:#161616;border-top:1px solid #2e2e2e;display:flex;align-items:center;gap:14px;padding:0 20px env(safe-area-inset-bottom);flex-shrink:0}
.li{display:flex;align-items:center;gap:5px;font-size:10px;color:#888}
.ld{width:10px;height:10px;border-radius:2px}

/* ── MANAGE / SETTINGS ── */
.sp{flex:1;overflow-x:hidden;overflow-y:auto;background:transparent}
.sp::-webkit-scrollbar{width:4px}
.sp::-webkit-scrollbar-thumb{background:#333;border-radius:4px}
.inn{max-width:600px;margin:0 auto;padding:24px;overflow-x:hidden}
.pt{font-size:20px;font-weight:700;margin-bottom:4px}
.ps{font-size:12px;color:#666;margin-bottom:22px}
.card{background:#161616;border:1px solid #2e2e2e;border-radius:14px;padding:18px 20px;margin-bottom:18px}
.ct{font-size:10px;font-weight:700;color:#444;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:14px}
.fld{margin-bottom:12px}
.fld label{display:block;font-size:11px;color:#888;margin-bottom:4px;font-weight:500}
.inp{width:100%;padding:8px 10px;background:#1e1e1e;border:1px solid #333;border-radius:10px;color:#f0f0f0;font-size:12px;font-family:inherit;outline:none}
textarea.inp{resize:vertical;min-height:52px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.drow{display:flex;gap:6px}
.dp{display:flex;align-items:center;gap:4px;flex:1}
.dp .inp{width:56px;text-align:center;padding:8px 6px}
.dp span{font-size:11px;color:#666}
.trow{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px}
.trow3{grid-template-columns:repeat(3,1fr)}
.tc{border:1px solid #333;border-radius:10px;padding:12px 8px;text-align:center;cursor:pointer;background:#1e1e1e}
.tc.on{border-color:#f0f0f0;background:#2a2a2a}
.tci{font-size:15px;display:block;margin-bottom:4px;opacity:.6}
.tc.on .tci{opacity:1}
.tcl{font-size:10px;font-weight:600;color:#888}
.tc.on .tcl{color:#f0f0f0}
.tcd{font-size:9px;color:#555;margin-top:3px;line-height:1.4}
.pr{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
.pb{padding:8px 4px;border:1px solid #333;border-radius:8px;background:#1e1e1e;text-align:center}
.pb.on{border-color:#f0f0f0;background:#2a2a2a}
.cr{display:flex;gap:5px;flex-wrap:wrap}
.cs{width:18px;height:18px;border-radius:5px;cursor:pointer;border:2px solid transparent;flex-shrink:0;transition:transform .1s}
.cs.on{border-color:#f0f0f0;transform:scale(1.15)}
.rr{display:flex;gap:5px;flex-wrap:wrap}
.rb{padding:5px 10px;border:1px solid #333;border-radius:7px;background:#1e1e1e;color:#888;font-size:11px}
.rb.on{border-color:#f0f0f0;color:#f0f0f0;background:#2a2a2a}
.dbs{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.db{width:30px;height:30px;border-radius:50%;border:1px solid #333;background:#1e1e1e;color:#555;font-size:10px;font-weight:500;display:flex;align-items:center;justify-content:center}
.db.on{background:#f0f0f0;color:#0d0d0d;border-color:#f0f0f0}
.subb{width:100%;padding:11px;background:#f0f0f0;color:#0d0d0d;border:none;border-radius:10px;font-size:13px;font-weight:700;margin-top:14px}
.subb:hover{opacity:.85}
.divl{height:1px;background:#222;margin:14px 0}
.dg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;overflow:hidden}
.dc{background:#1e1e1e;border:1px solid #222;border-radius:7px;padding:5px 3px;text-align:center}
.dcl{font-size:9px;color:#555;font-weight:600;margin-bottom:3px;text-transform:uppercase}
.dc input{width:100%;padding:3px 1px;background:#2a2a2a;border:1px solid #333;border-radius:4px;color:#f0f0f0;font-size:10px;font-family:inherit;text-align:center;outline:none}
.ih{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.ith{font-size:13px;font-weight:600}
.ic{font-size:11px;color:#555}
.icard{background:#161616;border:1px solid #2e2e2e;border-radius:10px;padding:11px 13px;margin-bottom:7px}
.icard:hover{border-color:#444}
.itop{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.idot{width:9px;height:9px;border-radius:2px;flex-shrink:0}
.iname{font-size:12px;font-weight:600;flex:1}
.iname.dn{text-decoration:line-through;color:#555}
.itype{font-size:10px;color:#555;text-transform:uppercase;letter-spacing:.7px}
.ibtns{display:flex;gap:4px}
.ibtn{padding:3px 8px;border:1px solid #333;border-radius:5px;background:transparent;color:#888;font-size:10px}
.ibtn:hover{background:#1e1e1e;color:#f0f0f0}
.ibtn.del:hover{border-color:#ef4444;color:#ef4444}
.ibtn.grn{border-color:#10b98155;color:#10b981}
.imeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
.tag{font-size:10px;color:#555;background:#1e1e1e;border-radius:4px;padding:2px 6px;border:1px solid #222}
.tag.g{background:#10b98122;border-color:#10b98144;color:#10b981}
.sr{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #222}
.sr:last-child{border-bottom:none}
.sl{font-size:12px}
.ss{font-size:10px;color:#555;margin-top:2px}
.sbtn{padding:6px 14px;border:1px solid #333;border-radius:7px;background:#1e1e1e;color:#888;font-size:11px}
.sbtn:hover{background:#2a2a2a;color:#f0f0f0}
.cp{width:26px;height:26px;border-radius:6px;border:2px solid #333;position:relative;overflow:hidden;flex-shrink:0}
.cp input[type=color]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.snum{width:80px;padding:6px 9px;background:#1e1e1e;border:1px solid #333;border-radius:7px;color:#f0f0f0;font-size:12px;font-family:inherit;outline:none;text-align:center}

/* ── POPOVER & MODAL ── */
.pop{position:absolute;background:#1a1a1a;border:1px solid #383838;border-radius:14px;padding:14px 16px;min-width:230px;max-width:260px;z-index:50;box-shadow:0 8px 32px rgba(0,0,0,.7)}
.mbg{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:150;display:flex;align-items:center;justify-content:center}
.mbox{background:#1a1a1a;border:1px solid #383838;border-radius:14px;padding:22px 24px;min-width:280px;max-width:340px;width:90%;max-height:88vh;overflow-y:auto}
.mt{font-size:15px;font-weight:700;margin-bottom:6px}
.ms{font-size:11px;color:#888;margin-bottom:16px;line-height:1.5}
.mo{display:flex;flex-direction:column;gap:8px}
.mopt{padding:10px 14px;border:1px solid #333;border-radius:10px;background:#1e1e1e;color:#f0f0f0;font-size:12px;text-align:left;line-height:1.4}
.mopt:hover{border-color:#555;background:#2a2a2a}
.mopt small{display:block;font-size:10px;color:#555;margin-top:2px}
.mcan{margin-top:10px;width:100%;padding:8px;background:transparent;border:none;color:#555;font-size:11px}
.mcan:hover{color:#888}

/* ── LIGHT MODE ── */
.lm body,.lm{background:#f5f5f5;color:#111}
.lm #nav,.lm #rbar,.lm #leg{background:#ffffff;border-color:#d0d0d0}
.lm .brand{color:#111}
.lm .tab{color:#999}
.lm .tab:hover{background:#e8e8e8;color:#444}
.lm .tab.on{background:#dcdcdc;color:#111}
.lm .vbtn{border-color:#ccc;color:#666;background:#f0f0f0}
.lm .vbtn:hover,.lm .vbtn.on{background:#111;color:#fff;border-color:#111}
.lm .arr{border-color:#ccc;color:#555;background:#f0f0f0}
.lm .arr:hover{background:#111;color:#fff}
.lm #rlbl{color:#555}
.lm #tbtn{border-color:#ccc;color:#555;background:#f0f0f0}
.lm #tbtn:hover{background:#111;color:#fff}
.lm .li{color:#555}
.lm .sp{background:transparent}
.lm .card{background:#fff;border-color:#d0d0d0}
.lm .ct{color:#888}
.lm .fld label{color:#555}
.lm .inp{background:#f0f0f0;border-color:#ccc;color:#111}
.lm .tc{border-color:#ccc;background:#f0f0f0}
.lm .tc.on{border-color:#111;background:#ddd}
.lm .tcl{color:#555}
.lm .tc.on .tcl{color:#111}
.lm .pb{border-color:#ccc;background:#f0f0f0}
.lm .pb.on{border-color:#111;background:#ddd}
.lm .rb{border-color:#ccc;background:#f0f0f0;color:#666}
.lm .rb.on{border-color:#111;color:#111;background:#ddd}
.lm .db{border-color:#ccc;background:#f0f0f0;color:#888}
.lm .db.on{background:#111;color:#fff;border-color:#111}
.lm .subb{background:#111;color:#fff}
.lm .divl{background:#e0e0e0}
.lm .dc{background:#f0f0f0;border-color:#d0d0d0}
.lm .dcl{color:#888}
.lm .dc input{background:#e8e8e8;border-color:#ccc;color:#111}
.lm .icard{background:#fff;border-color:#d0d0d0}
.lm .icard:hover{border-color:#aaa}
.lm .iname{color:#111}
.lm .iname.dn{color:#999}
.lm .itype{color:#888}
.lm .ibtn{border-color:#ccc;color:#666}
.lm .ibtn:hover{background:#e8e8e8;color:#111}
.lm .tag{color:#777;background:#f0f0f0;border-color:#ddd}
.lm .sr{border-color:#e0e0e0}
.lm .sl{color:#111}
.lm .ss{color:#888}
.lm .sbtn{border-color:#ccc;background:#f0f0f0;color:#555}
.lm .sbtn:hover{background:#111;color:#fff}
.lm .snum{background:#f0f0f0;border-color:#ccc;color:#111}
.lm .pop{background:#fff;border-color:#ccc;box-shadow:0 4px 24px rgba(0,0,0,.15)}
.lm .pop *{color:#111}
.lm .pop textarea{background:#f0f0f0!important;border-color:#ccc!important;color:#111!important}
.lm .pop button:not([style*="10b981"]):not([style*="ef4444"]){background:#f0f0f0!important;border-color:#ccc!important;color:#555!important}
.lm .mbox{background:#fff;border-color:#ccc}
.lm .mopt{border-color:#ccc;background:#f0f0f0;color:#111}
.lm .mopt:hover{border-color:#888;background:#e8e8e8}
.lm .mopt small{color:#888}
.lm .mcan{color:#888}
.lm .wrow{border-color:#e0e0e0}
.lm .whdr:hover{background:#f0f0f0}
.lm .mwk{border-color:#e0e0e0}
.lm .mwh{color:#888}
.lm .mwh:hover{background:#f0f0f0;border-color:#ccc;color:#444}
.lm .mday{border-color:#e0e0e0}
.lm .mday:hover{background:#f0f0f0}
.lm .mday.tod{border-color:#aaa}
.lm .mdn{color:#888}
.lm .mdn.tod{color:#111}
.lm .cs.on{border-color:#111}
.lm .av{background:#e8e8e8;border-color:#ccc;color:#555}
.av:hover{border-color:#888!important;opacity:.85}
.lm .h2{color:#666}

/* ── How-to accordion ── */
.ht-sec{border-bottom:1px solid #222;padding:0}
.ht-sum{list-style:none;cursor:pointer;padding:13px 0;font-size:13px;font-weight:600;color:#ccc;display:flex;justify-content:space-between;align-items:center;user-select:none}
.ht-sum::-webkit-details-marker{display:none}
.ht-sum::after{content:'›';font-size:16px;color:#555;transition:transform .2s;display:inline-block}
details[open]>.ht-sum::after{transform:rotate(90deg)}
.ht-body{padding:0 0 14px;font-size:13px;color:#888;line-height:1.65}
.ht-body p{margin:0 0 10px}
.ht-body p:last-child{margin-bottom:0}
.ht-list{margin:6px 0 10px 18px;padding:0;display:flex;flex-direction:column;gap:5px;color:#888}
.ht-list li{line-height:1.55}
.ht-list strong{color:#bbb}
.ht-body strong{color:#bbb}
.lm .ht-sec{border-bottom-color:#e0e0e0}
.lm .ht-sum{color:#333}
.lm .ht-sum::after{color:#aaa}
.lm .ht-body{color:#666}
.lm .ht-list{color:#666}
.lm .ht-list strong{color:#333}
.lm .ht-body strong{color:#333}

/* ── Mobile responsive (portrait phones ≤600px; no orientation qualifier so PWA standalone always matches) ── */
@media (max-width:600px){
  #nav{padding:0 10px;gap:4px}
  .brand{font-size:10px;letter-spacing:2px}
  .tab{padding:5px 9px;font-size:11px}
  /* Rbar: row 1 = view buttons, .sep is invisible flex line-break, row 2 = < label > Today */
  #rbar{height:auto;gap:4px;padding:6px 8px;flex-wrap:wrap;align-items:center}
  .vbtn{flex:1;padding:7px 4px;font-size:11px;text-align:center}
  .sep{width:100%;height:0;background:transparent;border:none;margin:0;padding:0;flex-shrink:0}
  .arr{width:36px;height:36px;font-size:16px;flex-shrink:0}
  #rlbl{flex:1;min-width:0;font-size:11px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #tbtn{padding:6px 12px;font-size:11px;flex-shrink:0}
  /* Hide legend on mobile — labels removed per user request */
  #leg{display:none}
  #vh{display:none}
  .inn{padding:12px}
  .card{padding:14px;overflow:hidden}
  .ct{font-size:10px}
  .fld label{font-size:10px}
  .inp{padding:6px 8px;font-size:13px}
  .f2{display:block}
  /* Date/time/select inputs: shortened and centered so they never overflow */
  input[type=date],input[type=datetime-local],input[type=time],select.inp{
    display:block;width:85%;max-width:85%;margin:0 auto;
  }
  .drow{flex-wrap:wrap}
  .subb{padding:11px;font-size:13px}
  .dg{grid-template-columns:repeat(4,minmax(0,1fr))}
  .trow3{grid-template-columns:1fr}
  .tcd{display:none}
}

/* ── VOICE COMMANDS ── */
#vcbtn{width:28px;height:28px;border-radius:50%;border:1px solid #333;background:transparent;color:#888;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;padding:0;line-height:1}
#vcbtn:hover{background:#2a2a2a;color:#f0f0f0;border-color:#555}
#vcbtn.vcl{background:rgba(239,68,68,.12);border-color:#ef4444;color:#ef4444;animation:vcring .9s ease-in-out infinite}
@keyframes vcring{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.4)}50%{box-shadow:0 0 0 6px rgba(239,68,68,0)}}
#vcov{position:fixed;bottom:52px;left:50%;transform:translateX(-50%);background:#1a1a1a;border:1px solid #383838;border-radius:16px;padding:16px 22px;flex-direction:column;align-items:center;gap:10px;z-index:200;box-shadow:0 8px 40px rgba(0,0,0,.8);min-width:200px;max-width:340px;display:none}
.vcpulse{width:46px;height:46px;border-radius:50%;background:rgba(239,68,68,.1);border:2px solid #ef4444;display:flex;align-items:center;justify-content:center;animation:vcring .9s ease-in-out infinite}
.vcic{font-size:20px;line-height:1}
.vcsl{font-size:12px;color:#aaa;text-align:center;max-width:280px;line-height:1.5;word-break:break-word}
.vcstop{padding:6px 18px;border:1px solid #ef4444;border-radius:8px;background:transparent;color:#ef4444;font-size:11px;font-family:inherit}
.vcstop:hover{background:rgba(239,68,68,.15)}
.vcsp{width:22px;height:22px;border:2px solid #333;border-top-color:#f0f0f0;border-radius:50%;animation:vcspin 1s linear infinite}
@keyframes vcspin{to{transform:rotate(360deg)}}
.lm #vcbtn{border-color:#ccc;color:#555}
.lm #vcbtn:hover{background:#e8e8e8;color:#111;border-color:#aaa}
.lm #vcbtn.vcl{background:rgba(239,68,68,.08);border-color:#ef4444;color:#ef4444}
.lm #vcov{background:#fff;border-color:#ccc;box-shadow:0 8px 32px rgba(0,0,0,.15)}
.lm .vcsl{color:#555}

/* ── PIN SCREEN ── */
#pin-screen{position:fixed;inset:0;background:#0d0d0d;z-index:9998;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;transition:opacity .5s ease,transform .5s ease}
#pin-screen.pin-out{opacity:0;transform:scale(1.06);pointer-events:none}
.pin-logo{font-family:Georgia,'Times New Roman',serif;font-size:100px;line-height:1;color:#f0f0f0;animation:splashV .7s cubic-bezier(.16,1,.3,1) both}
.pin-name{font-size:15px;font-weight:600;letter-spacing:1px;color:#aaa;margin-bottom:6px}
.pin-inp{background:transparent;border:none;border-bottom:2px solid #444;border-radius:0;color:#f0f0f0;font-size:22px;text-align:center;letter-spacing:10px;padding:8px 16px;width:190px;outline:none;font-family:inherit;transition:border-color .2s}
.pin-inp:focus{border-bottom-color:#888}
.pin-err{font-size:11px;color:#ef4444;height:16px;text-align:center}
.pin-btn{padding:11px 38px;background:#f0f0f0;color:#0d0d0d;border:none;border-radius:10px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:4px;transition:opacity .2s,transform .15s}
.pin-btn:hover{opacity:.85}
.pin-btn:active{transform:scale(.93)}
@keyframes pin-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.pin-shake{animation:pin-shake .35s ease}
.lm #pin-screen{background:#f5f5f5}
.lm .pin-logo{color:#111}
.lm .pin-name{color:#666}
.lm .pin-inp{color:#111;border-bottom-color:#ccc}
.lm .pin-inp:focus{border-bottom-color:#666}
.lm .pin-btn{background:#111;color:#fff}
.pin-or{font-size:11px;color:#555;letter-spacing:1px;text-transform:uppercase}
.pin-gbtn{background:transparent;border:1px solid #444;border-radius:10px;color:#aaa;font-size:12px;font-family:inherit;padding:9px 24px;cursor:pointer;transition:border-color .2s,color .2s}
.pin-gbtn:hover{border-color:#888;color:#f0f0f0}
.lm .pin-or{color:#bbb}
.lm .pin-gbtn{border-color:#ccc;color:#555}
.lm .pin-gbtn:hover{border-color:#666;color:#111}

/* ── SPLASH ── */
#splash{position:fixed;inset:0;background:#000;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;transition:opacity .6s ease,transform .6s ease}
#splash.out{opacity:0;transform:scale(1.05);pointer-events:none}
#splash-label{font-size:11px;font-weight:700;letter-spacing:8px;text-transform:uppercase;color:#444;animation:splashLabel .6s cubic-bezier(.16,1,.3,1) .25s both}
#splash-v{font-family:Georgia,'Times New Roman',serif;font-size:180px;line-height:1;color:#f0f0f0;animation:splashV .7s cubic-bezier(.16,1,.3,1) both}
.lm #splash{background:#fff}
.lm #splash-label{color:#bbb}
.lm #splash-v{color:#111}
@keyframes splashV{from{opacity:0;transform:scale(.65)}to{opacity:1;transform:scale(1)}}
@keyframes splashLabel{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ── ANIMATIONS ── */
@keyframes pvPageIn{
  from{opacity:0;transform:translateY(28px) scale(.96)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes pvModalIn{
  from{opacity:0;transform:translateY(40px) scale(.91)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes pvPopIn{
  0%{opacity:0;transform:scale(.82) translateY(-12px)}
  65%{transform:scale(1.04) translateY(3px)}
  100%{opacity:1;transform:scale(1) translateY(0)}
}
@keyframes pvOverlay{from{opacity:0}to{opacity:1}}
@keyframes pvSlideIn{
  from{opacity:0;transform:translateX(-18px)}
  to{opacity:1;transform:translateX(0)}
}

/* Timeline directional transitions */
@keyframes pvTlExitL{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-32px)}}
@keyframes pvTlExitR{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(32px)}}
@keyframes pvTlEnterR{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}
@keyframes pvTlEnterL{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:translateX(0)}}
@keyframes pvTlFadeIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

#tlarea.pv-exit-l{animation:pvTlExitL .22s ease both;pointer-events:none}
#tlarea.pv-exit-r{animation:pvTlExitR .22s ease both;pointer-events:none}
#tlarea.pv-enter-r{animation:pvTlEnterR .46s cubic-bezier(.16,1,.3,1) both}
#tlarea.pv-enter-l{animation:pvTlEnterL .46s cubic-bezier(.16,1,.3,1) both}
#tlarea.pv-fade-in{animation:pvTlFadeIn .44s cubic-bezier(.16,1,.3,1) both}

/* Page transitions */
.page.on{animation:pvPageIn .46s cubic-bezier(.16,1,.3,1) both}

/* Modal */
.mbg{animation:pvOverlay .3s ease both}
.mbox{animation:pvModalIn .48s cubic-bezier(.16,1,.3,1) both}

/* Popover */
.pop{animation:pvPopIn .4s cubic-bezier(.16,1,.3,1) both;transform-origin:top center}

/* Nav tabs */
.tab{transition:background .22s,color .22s}

/* Range bar buttons */
.vbtn,.arr,#tbtn{transition:background .22s,color .22s,border-color .22s}
.vbtn:active,.arr:active{transform:scale(.88);transition:transform .1s}

/* Modal options */
.mopt{transition:background .18s,border-color .18s,transform .1s}
.mopt:active{transform:scale(.96)}

/* Submit button */
.subb{transition:opacity .22s,transform .14s}
.subb:active{transform:scale(.95)}

/* Item cards — lift on hover */
.icard{transition:border-color .25s,transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s}
.icard:hover{transform:translateY(-4px);box-shadow:0 10px 32px rgba(0,0,0,.5)}
.lm .icard:hover{box-shadow:0 8px 24px rgba(0,0,0,.14)}

/* Color swatches */
.cs{transition:transform .22s cubic-bezier(.16,1,.3,1),border-color .18s}
.cs:hover{transform:scale(1.2)}

/* Account avatar */
.av{transition:opacity .22s,border-color .22s,transform .18s}
.av:active{transform:scale(.88)}

/* Small buttons */
.ibtn{transition:background .18s,color .18s,border-color .18s}
.sbtn{transition:background .22s,color .22s}
.db{transition:background .18s,color .18s,border-color .18s,transform .12s}
.db:active{transform:scale(.88)}
.rb{transition:background .18s,color .18s,border-color .18s}
.pb{transition:background .18s,border-color .18s}
.tc{transition:background .22s,border-color .22s,transform .14s}
.tc:active{transform:scale(.95)}

/* Week / month rows */
.whdr{transition:background .18s}
.mwh{transition:background .18s,border-color .18s,color .18s}
.mday{transition:background .18s,border-color .18s,transform .24s}
.mday:hover{transform:scale(1.03)}

/* Sync status */
#syncst{transition:opacity .3s,color .3s}

/* Manage list: stagger each card in */
.icard{animation:pvSlideIn .38s cubic-bezier(.16,1,.3,1) both}
