/* TEDDY clickable prototype. TEDU brand: navy #00237E, yellow #F7D417 (fill only, navy text), red #D42E12 */
:root{
  --navy:#00237E; --navy-2:#0A3196; --yellow:#F7D417; --red:#D42E12;
  --page:#F5F7FB; --card:#FFFFFF; --ink:#1A1A1A; --muted:#5B6475; --hint:#7A8395;
  --soft:#E6EAF4; --line:#DDE3F0; --line-2:#C9D0E3;
  --c-course:#1F5BD8; --c-course-bg:#E3ECFD;
  --c-deadline:#C42A10; --c-deadline-bg:#FDE7E3;
  --c-study:#1E7A3C; --c-study-bg:#E1F4E6;
  --c-mine:#7A5A00; --c-mine-bg:#FFF3B8;
  --shadow:0 2px 10px rgba(0,35,126,.08); --shadow-2:0 6px 24px rgba(0,35,126,.14);
  --display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;
  --body:Arial,Helvetica,sans-serif;
  --r:16px;
  font-size:16px;
}
html.ts-small{font-size:14.5px} html.ts-large{font-size:18px}
html.hc{--muted:#2B3240;--hint:#3D4556;--line:#8A93A6;--line-2:#5B6475;--soft:#DCE2F2;--shadow:0 0 0 1.5px #1A1A1A;--shadow-2:0 0 0 2px #1A1A1A}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--body);line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--navy)}
:focus-visible{outline:3px solid var(--navy);outline-offset:2px}
.grow{flex:1}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
svg.i{width:1.4rem;height:1.4rem;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---------- shell ---------- */
.app{display:flex;height:100%;min-height:100%}
.side{display:none}
.main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%;position:relative}
.screen{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.wrap{width:100%;max-width:780px;margin:0 auto;padding:0 1rem}

/* header */
.hdr{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;min-height:4.4rem}
.hdr .grow{flex:1}
.wordmark{font-family:var(--display);font-weight:700;font-size:1.65rem;letter-spacing:.5px;text-transform:uppercase;color:var(--navy);line-height:1}
.vbar{width:2px;height:1.75rem;background:var(--line-2);border-radius:1px}
.tedu{height:2.4rem;width:auto;display:block}
.hdr h1{margin:0;font-size:1.4rem;line-height:1.3;color:var(--navy)}
.sub{padding:0 1rem .5rem;margin-top:-.4rem;font-size:.9rem;color:var(--muted)}
.ibtn{width:2.75rem;height:2.75rem;border-radius:50%;border:0;background:var(--soft);color:var(--navy);display:inline-flex;align-items:center;justify-content:center;flex:none;text-decoration:none}
.ibtn.dark{background:var(--navy);color:#fff}
.ibtn:hover{filter:brightness(.96)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3rem;padding:0 1.25rem;border-radius:12px;border:0;background:var(--navy);color:#fff;font-weight:700;font-size:1rem;text-decoration:none}
.btn:hover{background:var(--navy-2)}
.btn.sm{min-height:2.75rem;padding:0 1.1rem;font-size:.95rem}
.btn.ghost{background:transparent;color:var(--navy);border:1.5px solid var(--line-2)}
.btn.ghost:hover{background:var(--soft)}
.btn.yellow{background:var(--yellow);color:var(--navy)}
.btn.block{width:100%}
.pill{display:inline-flex;align-items:center;padding:.1rem .6rem;border-radius:12px;font-size:.75rem;font-weight:700;background:var(--soft);color:var(--navy);white-space:nowrap}
.pill.y{background:var(--yellow)}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow)}
.lbl{font-size:.88rem;font-weight:700;color:var(--muted);margin:1rem 0 .5rem}

/* ---------- composer ---------- */
.composer{padding:.5rem 1rem 1.4rem}
.composer form{max-width:780px;margin:0 auto;background:#fff;border-radius:28px;box-shadow:0 2px 12px rgba(0,35,126,.12);padding:.375rem .5rem;display:flex;align-items:center;gap:.375rem}
html.hc .composer form{box-shadow:0 0 0 2px #1A1A1A}
.composer .field{flex:1;min-width:0;position:relative;height:3rem}
.composer input{width:100%;height:3rem;border:0;font-size:1rem;background:transparent;outline:none;padding:0;position:relative;z-index:1}
.composer .send{background:var(--navy);color:#fff}
.composer .send:disabled{opacity:.45;cursor:default}
.cyc{position:absolute;inset:0 auto 0 0;display:flex;align-items:center;color:var(--hint);font-size:1rem;white-space:nowrap;pointer-events:none;transition:opacity .35s,transform .35s}
.cyc.out{opacity:0;transform:translateY(-6px)}
.cyc.in{opacity:0;transform:translateY(6px)}
.composer input:focus~.cyc,.composer input:not(:placeholder-shown)~.cyc{display:none}

/* ---------- home ---------- */
.hero{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1rem 1.75rem}
.mascot{width:9.5rem;height:9.5rem;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,35,126,.18))}
.hero h2{margin:.9rem 0 0;font-size:1.75rem;line-height:1.25;color:var(--navy)}
.hero p{margin:.4rem 0 0;color:var(--muted)}
.entry{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;margin-top:1.4rem}
.entry button{min-height:2.9rem;padding:0 1.1rem;border-radius:24px;border:1.5px solid var(--line-2);background:#fff;color:var(--navy);font-weight:700;display:inline-flex;align-items:center;gap:.5rem}
.entry button:hover{border-color:var(--navy);background:var(--soft)}
.greet{display:flex;align-items:center;gap:.9rem;padding:.4rem 0 0}
.greet img{width:5rem;height:5rem;object-fit:contain}
.greet small{display:block;color:var(--muted);font-size:.9rem}
.greet h2{margin:.1rem 0 0;font-size:1.6rem;line-height:1.2;color:var(--navy)}
.week{display:block;margin-top:1rem;padding:1rem;text-decoration:none;color:var(--ink);transition:transform .15s,box-shadow .15s}
.week:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}
.week .top{display:flex;justify-content:space-between;font-size:.82rem;color:var(--muted)}
.big{display:flex;align-items:center;gap:.9rem;margin-top:.3rem}
.big b{font-size:3rem;line-height:1;color:var(--navy);font-family:var(--display)}
.big span{font-size:1.1rem;font-weight:700;line-height:1.3}
.week ul{list-style:none;margin:.7rem 0 0;padding:0;display:flex;flex-direction:column;gap:.45rem;font-size:.95rem}
.week li{display:flex;gap:.6rem;align-items:center}
.week .more{margin-top:.8rem;font-weight:700;color:var(--navy);font-size:.95rem}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:.9rem}
.tile{min-height:4.6rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;border:0;color:var(--navy);text-decoration:none;font-size:.8rem;font-weight:700;transition:transform .15s}
.tile:hover{transform:translateY(-2px)}
.tile .ic{width:2.75rem;height:2.75rem;border-radius:14px;background:var(--soft);display:flex;align-items:center;justify-content:center}
.tile .t{color:var(--muted);font-weight:400}

/* ---------- chat ---------- */
.msgs{display:flex;flex-direction:column;gap:1rem;padding:.5rem 0 1rem}
.me{align-self:flex-end;max-width:82%;border-radius:18px 18px 4px 18px;padding:.75rem 1rem;background:var(--navy);color:#fff;animation:pop .25s ease}
.bot{display:flex;gap:.6rem;align-items:flex-start;max-width:92%;animation:pop .3s ease}
.bot .av{width:2.2rem;height:2.2rem;border-radius:50%;flex:none;object-fit:cover;background:#fff;box-shadow:var(--shadow)}
.bubble{background:#fff;border-radius:18px 18px 18px 4px;box-shadow:var(--shadow);padding:.85rem 1rem}
.bubble p{margin:0 0 .6rem}.bubble p:last-child{margin-bottom:0}
.bubble ol,.bubble ul{margin:.2rem 0 .6rem;padding-left:1.2rem}
.bubble.decline{background:#FFF6F4;box-shadow:inset 0 0 0 1.5px #F4C7BE}
.src{display:inline-flex;align-items:center;gap:.35rem;min-height:2.25rem;padding:0 .75rem;border-radius:18px;background:var(--soft);color:var(--navy);font-size:.82rem;text-decoration:none;border:0;margin-top:.2rem}
.meta{font-size:.82rem;color:var(--muted);margin:.4rem 0 0 2.8rem}
.meta button{background:none;border:0;padding:0;color:var(--navy);text-decoration:underline;font-size:inherit}
.typing{display:inline-flex;gap:4px;padding:.3rem 0}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--line-2);animation:blink 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes blink{0%,100%{opacity:.3}50%{opacity:1;background:var(--navy)}}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.inline-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}

/* ---------- menu (mobile full page) ---------- */
.menu-list{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 1rem}
.mitem{display:flex;align-items:center;gap:1rem;min-height:4.5rem;padding:0 1rem;border-radius:20px;background:#fff;box-shadow:var(--shadow);color:var(--ink);text-decoration:none;font-size:1.3rem;font-weight:700;border:0;width:100%;text-align:left;transition:transform .15s}
.mitem:hover{transform:translateX(3px)}
.mitem .ic{width:3rem;height:3rem;border-radius:14px;background:var(--soft);color:var(--navy);display:flex;align-items:center;justify-content:center}
.mitem .ic svg{width:1.6rem;height:1.6rem}
.mitem .grow{flex:1}
.mitem .chev{color:var(--muted);font-size:1.5rem}
.mitem.locked{opacity:.6}
.history{display:flex;align-items:center;gap:.75rem;min-height:3.5rem;margin:0 1rem .75rem;padding:0 1rem;border-radius:16px;border:1px solid var(--line-2);color:var(--navy);text-decoration:none;font-weight:700;background:transparent}
.profile{display:flex;align-items:center;gap:.75rem;padding:1rem 1rem 1.6rem;border-top:1px solid var(--line);background:#fff}
.profile img{width:3rem;height:3rem;border-radius:50%;object-fit:cover}
.profile .grow{flex:1}
.profile small{display:block;color:var(--muted);font-size:.82rem}
.guest-box{margin:.5rem 1rem;padding:1.1rem;text-align:left}
.guest-box h3{margin:0 0 .3rem;color:var(--navy)}
.guest-box p{margin:0 0 .9rem;color:var(--muted);font-size:.92rem}

/* ---------- tabs / segmented ---------- */
.seg{display:flex;background:var(--soft);border-radius:24px;padding:4px;gap:2px}
.seg button{flex:1;min-height:2.75rem;border:0;border-radius:20px;background:transparent;color:var(--navy);font-size:.92rem}
.seg button[aria-selected=true],.seg button[aria-pressed=true]{background:var(--navy);color:#fff;font-weight:700}
.chips{display:flex;gap:.5rem;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none}
.chips button{flex:none;min-height:2.5rem;padding:0 .95rem;border-radius:20px;border:1.5px solid var(--line-2);background:#fff;color:var(--ink);font-size:.88rem;display:inline-flex;align-items:center;gap:.4rem}
.chips button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:700}
.dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block;flex:none}

/* ---------- list rows ---------- */
.row{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;margin-bottom:.75rem}
.row .grow{flex:1;min-width:0}
.row small{display:block;font-size:.8rem;color:var(--muted)}
.row strong{display:block;font-size:1rem}
.bell[aria-pressed=true]{background:var(--yellow)}
.ann{padding:.9rem 1rem;margin-bottom:.75rem}
.ann .h{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;font-size:.8rem;color:var(--muted)}
.ann a,.linkbtn{display:inline-block;margin-top:.4rem;font-size:.85rem;color:var(--navy);background:none;border:0;padding:0;text-decoration:underline}
.course{padding:1rem;margin-bottom:.75rem}
.course .h{display:flex;align-items:center;gap:.6rem}
.course .code{font-family:var(--display);font-weight:700;font-size:1.35rem;color:var(--navy)}
.course .next{margin-top:.4rem;font-size:.9rem;color:var(--muted)}
.res{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;margin-bottom:.6rem}
.res .ft{width:2.5rem;height:2.5rem;border-radius:10px;background:var(--soft);color:var(--navy);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700}

/* ---------- campus ---------- */
.search{display:flex;align-items:center;gap:.5rem;background:#fff;border-radius:24px;box-shadow:var(--shadow);padding:0 1rem;min-height:3rem}
.search input{flex:1;min-width:0;height:3rem;border:0;background:transparent;outline:none;font-size:1rem}
.cgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:.9rem}
.ctile{padding:1rem;text-align:left;border:0;color:var(--ink);min-height:7.5rem;transition:transform .15s}
.ctile:hover{transform:translateY(-2px)}
.ctile .ic{width:2.75rem;height:2.75rem;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:.7rem}
.ctile b{display:block;font-size:1rem}
.ctile small{display:block;color:var(--muted);font-size:.82rem;margin-top:.15rem}
.mapcard{grid-column:span 2;padding:1rem;text-align:left;border:0}
.mapcard .h{display:flex;justify-content:space-between;align-items:center;margin-bottom:.7rem;font-weight:700}
.mapcard img{width:100%;height:8rem;object-fit:cover;object-position:left 30%;border-radius:12px;display:block}

/* ---------- plan ---------- */
.cal-head{display:flex;align-items:center;gap:.5rem;margin:.6rem 0 .4rem}
.cal-head h2{flex:1;margin:0;font-size:1.15rem;text-align:center;color:var(--navy)}
.cal{padding:.6rem}
.dow,.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.dow div{text-align:center;font-size:.72rem;color:var(--muted);padding:.2rem 0 .4rem;font-weight:700}
.day{position:relative;min-height:3.4rem;border:0;background:transparent;border-radius:10px;padding:.25rem .15rem;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.85rem}
.day:hover{background:var(--soft)}
.day.other{color:#A7AEBD}
.day.today .n{background:var(--yellow);color:var(--navy);font-weight:700}
.day[aria-pressed=true]{background:var(--navy);color:#fff}
.day[aria-pressed=true] .n{background:transparent;color:#fff}
.day .n{width:1.7rem;height:1.7rem;border-radius:50%;display:flex;align-items:center;justify-content:center}
.day .dots{display:flex;gap:3px;flex-wrap:wrap;justify-content:center}
.day .dots i{width:6px;height:6px;border-radius:50%}
.day .ev{display:none}
.agenda h3{margin:1rem 0 .6rem;font-size:1rem}
.ev-row{display:flex;align-items:center;gap:.75rem;padding:.75rem .9rem;margin-bottom:.6rem;border-left:0}
.ev-row .tag{font-size:.72rem;font-weight:700;padding:.15rem .55rem;border-radius:10px}
.ev-row .grow{flex:1;min-width:0}
.ev-row small{display:block;color:var(--muted);font-size:.8rem}
.empty{padding:1rem;color:var(--muted);text-align:center;font-size:.92rem}
.legend{display:flex;flex-wrap:wrap;gap:.9rem;font-size:.78rem;color:var(--muted);margin:.5rem 0 0}
.legend span{display:inline-flex;align-items:center;gap:.35rem}

/* colors */
.k-course{--k:var(--c-course);--kb:var(--c-course-bg)}
.k-deadline{--k:var(--c-deadline);--kb:var(--c-deadline-bg)}
.k-study{--k:var(--c-study);--kb:var(--c-study-bg)}
.k-mine{--k:var(--c-mine);--kb:var(--c-mine-bg)}
.k-bg{background:var(--kb);color:var(--k)}
.k-dot{background:var(--k)}
.k-mine .k-dot,.k-mine.k-dot{background:#E2B800}

/* ---------- settings ---------- */
.set{padding:1rem;margin-bottom:.9rem}
.set h3{margin:0 0 .2rem;font-size:1.05rem}
.set p.d{margin:0 0 .8rem;color:var(--muted);font-size:.88rem}
.opt{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;border-radius:12px;border:1.5px solid var(--line);margin-bottom:.5rem;cursor:pointer}
.opt:has(input:checked){border-color:var(--navy);background:#F0F3FB}
.opt input{margin-top:.2rem;accent-color:var(--navy);width:1.15rem;height:1.15rem}
.opt b{display:block}.opt small{color:var(--muted)}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2.75rem}
.switch{position:relative;width:3.2rem;height:1.85rem;border-radius:1rem;border:0;background:var(--line-2);flex:none;transition:background .2s}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:calc(1.85rem - 6px);height:calc(1.85rem - 6px);border-radius:50%;background:#fff;transition:transform .2s}
.switch[aria-checked=true]{background:var(--navy)}
.switch[aria-checked=true]::after{transform:translateX(1.35rem)}

/* ---------- consent / login ---------- */
.center-card{max-width:440px;margin:0 auto;padding:1.4rem}
.steps{list-style:none;margin:1rem 0 1.4rem;padding:0;display:flex;flex-direction:column;gap:.85rem}
.steps li{display:flex;gap:.8rem;align-items:flex-start}
.steps .n{width:1.9rem;height:1.9rem;border-radius:50%;background:var(--yellow);color:var(--navy);font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
.fld{display:block;margin-bottom:.9rem}
.fld span{display:block;font-size:.85rem;font-weight:700;margin-bottom:.3rem}
.fld input,.fld select{width:100%;min-height:3rem;border-radius:12px;border:1.5px solid var(--line-2);padding:0 .9rem;background:#fff;font-size:1rem}

/* ---------- sheet / dialog / toast ---------- */
.scrim{position:fixed;inset:0;background:rgba(10,20,50,.45);display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:fade .2s}
.sheet{background:#fff;width:100%;max-width:520px;border-radius:24px 24px 0 0;padding:1.3rem 1.2rem 1.6rem;max-height:88%;overflow:auto;animation:up .25s ease}
.sheet h2{margin:0 0 .4rem;color:var(--navy);font-size:1.3rem;display:flex;align-items:center;gap:.6rem}
.sheet .x{margin-left:auto}
.sheet ul{padding-left:1.1rem;margin:.4rem 0 1rem}
.sheet li{margin-bottom:.35rem}
.sheet img.map{width:100%;border-radius:12px;display:block}
@keyframes fade{from{opacity:0}} @keyframes up{from{transform:translateY(30px);opacity:0}}
.toast{position:fixed;left:50%;bottom:6.5rem;transform:translateX(-50%);background:var(--ink);color:#fff;padding:.7rem 1.1rem;border-radius:12px;font-size:.9rem;z-index:60;box-shadow:var(--shadow-2);animation:pop .25s;max-width:90%;text-align:center}
.note{font-size:.78rem;color:var(--muted)}

.desk-login{display:none!important}
.hero{overflow-y:auto}
/* ---------- desktop ---------- */
@media (min-width:960px){
  .side{display:flex;flex-direction:column;width:270px;flex:none;background:#fff;border-right:1px solid var(--line);height:100%;overflow-y:auto}
  .side .brand{display:flex;align-items:center;gap:.6rem;padding:1.1rem 1.1rem .6rem}
  .side .brand img.m{width:2.6rem;height:2.6rem;object-fit:contain}
  .side .brand .tedu{height:1.7rem}
  .side .newchat{margin:.5rem 1rem .6rem}
  .side nav{display:flex;flex-direction:column;gap:.2rem;padding:.3rem .6rem}
  .side nav a{display:flex;align-items:center;gap:.8rem;min-height:2.9rem;padding:0 .7rem;border-radius:12px;color:var(--ink);text-decoration:none;font-weight:700;font-size:.97rem}
  .side nav a .ic{width:2.2rem;height:2.2rem;border-radius:10px;background:var(--soft);color:var(--navy);display:flex;align-items:center;justify-content:center}
  .side nav a .ic svg{width:1.2rem;height:1.2rem}
  .side nav a:hover{background:#F0F3FB}
  .side nav a[aria-current=page]{background:var(--soft);color:var(--navy)}
  .side nav a[aria-current=page] .ic{background:var(--navy);color:#fff}
  .side nav a .pill{margin-left:auto}
  .side nav a.locked{opacity:.55}
  .side .grow{flex:1}
  .side .history{margin:.5rem 1rem .6rem;min-height:2.9rem}
  .side .profile{padding:.9rem 1rem;background:transparent}
  .side .guest-box{margin:.6rem;box-shadow:none;background:var(--page)}
  .mob{display:none!important}
  .hdr{padding:1rem 2rem;min-height:4.6rem}
  .sub{padding:0 2rem .6rem}
  .wrap{padding:0 2rem;max-width:1080px}
  .wrap.narrow{max-width:820px}
  .hdr,.sub{width:100%;max-width:1080px;margin-left:auto;margin-right:auto}
  .sub{margin-top:-.4rem}
  .greet img{width:6rem;height:6rem}
  .greet h2{font-size:2rem}
  .home-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:1rem;align-items:stretch}
  .home-grid .week{margin-top:1rem}
  .home-grid .tiles{grid-template-columns:1fr;margin-top:1rem}
  .home-grid .tile{flex-direction:row;justify-content:flex-start;padding:0 1rem;gap:.8rem;font-size:.95rem}
  .home-grid .tile .t{display:inline}
  .mascot{width:11rem;height:11rem}
  .hero h2{font-size:2.3rem}
  .cgrid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .mapcard{grid-column:span 4}
  .mapcard img{height:13rem}
  .plan-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:1.2rem;align-items:start}
  .plan-grid .agenda h3{margin-top:.6rem}
  .day{min-height:5.6rem;align-items:stretch;padding:.3rem}
  .day .n{align-self:flex-start;width:1.8rem;height:1.8rem}
  .day .dots{display:none}
  .day .ev{display:block;font-size:.7rem;line-height:1.2;padding:.12rem .3rem;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
  .day[aria-pressed=true] .ev{box-shadow:0 0 0 1px rgba(255,255,255,.6)}
  .week-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1.2rem}
  .scrim{align-items:center}
  .sheet{border-radius:24px}
  .toast{bottom:2rem}
  .side-only-hide{display:none}
  .desk-login{display:inline-flex!important}
}
@media (max-width:959px){ .desk-only{display:none!important} }
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
