@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/fonts/archivo-latin.woff2) format("woff2")}@font-face{font-family:Gochi Hand;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/gochi-hand-latin.woff2) format("woff2")}:root{--board: #151a22;--board-glow-a: rgba(120, 150, 220, .12);--board-glow-b: rgba(170, 150, 255, .07);--board-glow-c: rgba(100, 200, 210, .06);--sheet: #212a37;--sheet-edge: rgba(190, 210, 240, .1);--ink: #e7ecf4;--ink-soft: #9ba7b9;--rule: rgba(190, 210, 240, .09);--rule-strong: rgba(190, 210, 240, .22);--fluo: #e6ff3d;--fluo-ink: #161614;--pen: #ff8fc1;--pin-a: #ff8fc1;--pin-b: #6fe0d2;--tape: rgba(255, 200, 230, .2);--accent: #aebcff;--accent-ink: #141a2e;--accent-soft: rgba(174, 188, 255, .14);--accent-line: rgba(174, 188, 255, .5);--fill: rgba(190, 210, 240, .06);--fill-strong: rgba(190, 210, 240, .11);--lift: 0 1px 2px rgba(0, 0, 0, .3), 0 14px 32px -14px rgba(0, 0, 0, .65);--lift-hover: 0 2px 4px rgba(0, 0, 0, .3), 0 18px 36px -14px rgba(0, 0, 0, .75);--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 22px;--r-pill: 999px;--print: "Archivo", "Arial Narrow", system-ui, sans-serif;--hand: "Gochi Hand", "Comic Sans MS", cursive;--ease: cubic-bezier(.16, 1, .3, 1);--spring: cubic-bezier(.34, 1.56, .64, 1);--danger: var(--pen);--exam: #c8323a;--exam-ink: #ffffff;--exam-line: #ff6b5e;color-scheme:dark;--bg-primary: var(--board);--bg-secondary: var(--sheet);--text-primary: var(--ink);--text-secondary: var(--ink-soft);--border-color: var(--rule-strong);--accent-color: var(--accent);--card-shadow: var(--lift)}:root[data-theme=light]{--board: #f6f3fc;--board-glow-a: rgba(196, 181, 253, .38);--board-glow-b: rgba(253, 186, 215, .32);--board-glow-c: rgba(167, 230, 215, .3);--sheet: #ffffff;--sheet-edge: rgba(92, 78, 150, .08);--ink: #2a2640;--ink-soft: #6c6788;--rule: rgba(92, 78, 150, .1);--rule-strong: rgba(92, 78, 150, .24);--fluo: #eaff2a;--fluo-ink: #191917;--pen: #e0559a;--pin-a: #f07ab0;--pin-b: #3cc4b2;--tape: rgba(255, 214, 232, .75);--accent: #c9bfff;--accent-ink: #2f2670;--accent-soft: #efebff;--accent-line: #b3a6f5;--fill: rgba(120, 100, 200, .06);--fill-strong: rgba(120, 100, 200, .1);--lift: 0 1px 3px rgba(80, 60, 150, .06), 0 14px 34px -16px rgba(80, 60, 150, .22);--lift-hover: 0 2px 6px rgba(80, 60, 150, .08), 0 20px 40px -16px rgba(80, 60, 150, .3);--exam-line: #c8323a;color-scheme:light}.paper-pink{--ph: 344}.paper-sky{--ph: 242}.paper-mint{--ph: 170}.paper-orange{--ph: 42}.paper-lilac{--ph: 294}:root :is(.paper-pink,.paper-sky,.paper-mint,.paper-orange,.paper-lilac){--paper-wash: oklch(.8 .09 var(--ph) / .2);--paper-edge: oklch(.8 .09 var(--ph) / .36);--paper-tone: oklch(.84 .1 var(--ph));background:radial-gradient(130% 100% at 0% 0%,var(--paper-wash),transparent 70%),var(--sheet);border-color:var(--paper-edge)}:root[data-theme=light] :is(.paper-pink,.paper-sky,.paper-mint,.paper-orange,.paper-lilac){--paper-wash: oklch(.93 .055 var(--ph));--paper-edge: oklch(.88 .05 var(--ph));--paper-tone: oklch(.52 .13 var(--ph))}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--board);background-image:radial-gradient(60rem 40rem at 0% 0%,var(--board-glow-a),transparent 70%),radial-gradient(50rem 36rem at 100% 10%,var(--board-glow-b),transparent 70%),radial-gradient(56rem 40rem at 50% 110%,var(--board-glow-c),transparent 70%);background-attachment:fixed;color:var(--ink);font-family:var(--print);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}::selection{background:var(--pen);color:var(--sheet)}:focus-visible{outline:3px solid var(--accent-line);outline-offset:3px}input,select,textarea,button{font:inherit;color:inherit}input[type=checkbox],input[type=radio]{accent-color:var(--accent-line)}*{scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent}.sheet{position:relative;background:var(--sheet);border:1px solid var(--sheet-edge);border-radius:var(--r-lg);box-shadow:var(--lift);color:var(--ink)}.pin{position:absolute;width:20px;height:20px;top:-6px;z-index:3;fill:var(--pin-a);filter:drop-shadow(0 3px 2px rgba(0,0,0,.35))}.pin .pin-shine{fill:#ffffff8c}.pin-a{left:50%}.pin-b{fill:var(--pin-b);right:14%}.pin-c{left:2.2rem}.tape{position:absolute;top:-12px;left:1.6rem;width:104px;height:26px;background:var(--tape);transform:rotate(-5deg);clip-path:polygon(2% 0,98% 4%,100% 50%,97% 100%,0 96%,3% 50%);z-index:3}.ticket{--ticket-bg: transparent;--ticket-fg: var(--ink);--ticket-sub: var(--ink-soft);--stub: 3.25rem;position:relative;display:grid;grid-template-columns:var(--stub) minmax(0,1fr);align-items:center;min-height:3.6rem;border:1.5px solid var(--ticket-line, var(--rule-strong));border-radius:var(--r-md);background:var(--ticket-bg);color:var(--ticket-fg);font:inherit;text-align:left;text-decoration:none;cursor:pointer;-webkit-mask:radial-gradient(circle 6px at var(--stub) 0,#0000 96%,#000) top / 100% 51% no-repeat,radial-gradient(circle 6px at var(--stub) 100%,#0000 96%,#000) bottom / 100% 51% no-repeat;mask:radial-gradient(circle 6px at var(--stub) 0,#0000 96%,#000) top / 100% 51% no-repeat,radial-gradient(circle 6px at var(--stub) 100%,#0000 96%,#000) bottom / 100% 51% no-repeat;transition:transform .22s var(--ease),background-color .16s ease-out}.ticket:hover:not(:disabled){transform:translateY(-2px)}.ticket:active:not(:disabled){transform:translateY(0) rotate(0)}.ticket:disabled{cursor:progress;opacity:.85}.ticket:focus-visible{outline:none;box-shadow:0 0 0 3px var(--board),0 0 0 6px var(--pen)}.ticket-stub{height:100%;display:grid;place-items:center;border-right:1.5px dashed color-mix(in srgb,var(--ticket-fg) 45%,transparent)}.ticket-stub>*{transition:transform .32s var(--spring)}.ticket:hover:not(:disabled) .ticket-stub>*{transform:scale(1.14) rotate(-6deg)}.ticket-stub img{width:20px;height:20px}.ticket-text{display:grid;gap:.1rem;padding:.55rem .9rem}.ticket strong{font-weight:750;font-stretch:85%;font-size:1rem;line-height:1.2}.ticket small{font-size:.8rem;color:var(--ticket-sub)}.ms-mark{display:grid;grid-template-columns:repeat(2,8px);gap:2px}.ms-mark span{width:8px;height:8px}.ms-mark span:nth-child(1){background:#f25022}.ms-mark span:nth-child(2){background:#7fba00}.ms-mark span:nth-child(3){background:#00a4ef}.ms-mark span:nth-child(4){background:#ffb900}.ticket-spinner{width:18px;height:18px;border:2px solid color-mix(in srgb,currentColor 30%,transparent);border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}.tool{width:40px;height:40px;flex:none;display:inline-grid;place-items:center;border-radius:var(--r-sm);border:0;background:var(--fill);color:var(--ink);cursor:pointer;transition:background-color .16s ease-out,color .16s ease-out,transform .2s var(--ease)}.tool:hover{background:var(--accent-soft);color:var(--accent-ink)}:root:not([data-theme=light]) .tool:hover{color:var(--accent)}.tool:active{transform:scale(.94)}.tool.is-bare{background:transparent}.tool.is-bare:hover{background:var(--fill-strong)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:40px;padding:.5rem 1.1rem;border:0;border-radius:var(--r-pill);background:var(--fill);color:var(--ink);font-weight:700;font-stretch:85%;font-size:.95rem;line-height:1.1;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background-color .16s ease-out,border-color .16s ease-out,color .16s ease-out}.btn:hover:not(:disabled){background:var(--fill-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.is-ink{background:var(--accent);color:var(--accent-ink)}.btn.is-ink:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 85%,var(--accent-ink))}.btn.is-small{min-height:32px;padding:.3rem .8rem;font-size:.85rem}.ticket.is-ink{--ticket-bg: var(--accent);--ticket-fg: var(--accent-ink);--ticket-sub: color-mix(in srgb, var(--accent-ink) 72%, var(--accent));--ticket-line: var(--accent)}.ticket.is-compact{--stub: 2.75rem;min-height:3rem}.ticket.is-compact .ticket-text{padding:.45rem .9rem}.ticket:focus-visible{box-shadow:0 0 0 3px var(--sheet),0 0 0 6px var(--pen)}.switch{appearance:none;flex:none;position:relative;width:44px;height:24px;border-radius:var(--r-pill);border:0;background:var(--fill-strong);cursor:pointer;transition:background-color .18s ease-out,border-color .18s ease-out}.switch:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:9px;background:var(--sheet);box-shadow:0 1px 3px #281e504d;transition:transform .28s var(--spring),width .16s ease-out,background-color .18s ease-out}.switch:active:after{width:22px}.switch:checked:active:after{transform:translate(16px)}.switch:checked{background:var(--accent-line)}.switch:checked:after{transform:translate(20px)}.field{display:grid;gap:.45rem;min-width:0}.field>span,.label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.input,.field input,.field select{width:100%;min-height:44px;padding:.5rem .9rem;border:1.5px solid transparent;border-radius:var(--r-sm);background:var(--fill);color:var(--ink);font-size:.95rem;transition:border-color .16s ease-out}.input::placeholder,.field input::placeholder{color:color-mix(in srgb,var(--ink-soft) 85%,transparent)}.input:hover,.field input:hover,.field select:hover{border-color:var(--rule-strong)}.input:focus-visible,.field input:focus-visible,.field select:focus-visible{outline:none;border-color:var(--accent-line);background:var(--sheet);box-shadow:0 0 0 4px var(--accent-soft)}.marker{padding:0 .18em;margin:0 -.18em;border-radius:2px 7px 3px 6px;background:linear-gradient(var(--fluo),var(--fluo)) 0 60% / 100% 82% no-repeat;color:var(--fluo-ink);-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:marker-stroke .55s .2s var(--ease) both}@keyframes marker-stroke{0%{background-size:0 82%}}.hand{font-family:var(--hand);color:var(--pen);font-weight:400;line-height:1}.loading-screen{min-height:100vh;min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:1rem;padding:1.5rem;text-align:center}.loading-screen p{max-width:32ch;color:var(--ink-soft);font-size:.95rem}.spinner{width:28px;height:28px;border:3px solid var(--accent-soft);border-top-color:var(--accent-line);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}:root :is(.btn,.board-tool,.seg>button,.seg>label,.day-chip,.facts-chips button,.drawer-actions button,.day-strip button,.month button,.drawer-remove,.tree-toggle,.pwa-banner-btn,.cookie-banner__btn){transition:background-color .16s ease-out,color .16s ease-out,border-color .16s ease-out,box-shadow .2s ease-out,transform .26s var(--spring)}:root :is(.btn,.board-tool,.seg>button,.seg>label,.day-chip,.facts-chips button,.drawer-actions button,.day-strip button,.month button,.drawer-remove,.tree-toggle,.pwa-banner-btn,.cookie-banner__btn):active:not(:disabled){transform:scale(.95);transition-duration:.16s,.16s,.16s,.2s,90ms}@keyframes hand-write{0%{clip-path:inset(-30% 100% -30% -10%)}to{clip-path:inset(-30% -10%)}}@keyframes card-in{0%{opacity:0;translate:0 8px;scale:.98}}@keyframes pop-in{0%{opacity:0;scale:.5;rotate:-12deg}}@keyframes tape-stick{0%{opacity:0;translate:0 -8px;scale:1.08}}::view-transition-old(root),::view-transition-new(root){animation-duration:.32s;animation-timing-function:ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.spinner,.ticket-spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}.board{min-height:100vh;min-height:100svh;color:var(--ink);font-family:var(--print);font-stretch:100%;overflow-x:clip;display:flex;flex-direction:column}.board ::selection{background:var(--pen);color:var(--sheet)}.board a:not(.ticket){color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}.board :focus-visible{outline:3px solid var(--accent-line);outline-offset:3px}:root .board [class*=paper-]{background:color-mix(in oklab,var(--sheet) 88%,oklch(.74 .11 var(--ph)));border-color:color-mix(in oklab,var(--sheet) 72%,oklch(.74 .11 var(--ph)))}:root[data-theme=light] .board [class*=paper-]{background:oklch(.972 .024 var(--ph));border-color:oklch(.9 .045 var(--ph))}.board .sheet,.board .shot{rotate:var(--tilt, 0deg);transform-origin:50% 0;transition:rotate .6s var(--ease),transform .4s var(--ease),box-shadow .3s ease-out}.board :is(.timetable,.showcase-label,.matrix):hover{rotate:calc(var(--tilt, 0deg) * .3);transform:translateY(-3px);box-shadow:var(--lift-hover)}.board .pin{width:22px;height:22px;top:-8px;margin-left:-11px;color:var(--pin-a);filter:drop-shadow(1px 3px 1.5px rgba(0,0,0,.4));transition:translate .28s var(--spring),filter .28s ease-out}.board .pin-b{color:var(--pin-b);margin-left:0}.board .pin-c{margin-left:0}.board .pin .pin-body{fill:color-mix(in oklab,currentColor 62%,#000)}.board .pin .pin-top{fill:currentColor}.board .pin .pin-shine{fill:#ffffffb3}:root[data-theme=light] .board .pin{filter:drop-shadow(1px 3px 1.5px rgba(60,40,110,.3))}.board .sheet[class*=paper-]>.pin{color:var(--paper-tone)}.board :is(.sheet,.shot):hover>.pin{translate:0 -3px;filter:drop-shadow(2px 7px 3px rgba(0,0,0,.32))}:root[data-theme=light] .board :is(.sheet,.shot):hover>.pin{filter:drop-shadow(2px 7px 3px rgba(60,40,110,.22))}.board .tape{top:-13px;left:1.75rem;width:96px;height:28px;background-color:#ffafd457;box-shadow:inset 0 1px #ffffff38,inset 0 -1px #0000001f;transform:rotate(-4deg);clip-path:polygon(3% 0,97% 0,100% 14%,96.5% 28%,100% 43%,97% 57%,100% 71%,96.5% 86%,98.5% 100%,2% 100%,0 86%,3.5% 72%,0 57%,3% 43%,0 28%,3.5% 14%)}:root[data-theme=light] .board .tape{background-color:#ffd2e6b3;box-shadow:inset 0 1px #fff9}.board-bar{width:min(1320px,100% - 2rem);margin:0 auto;padding:1rem 0 .5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.board-brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;font-weight:800;font-stretch:85%;font-size:1.2rem;letter-spacing:-.01em}.board-brand img{width:40px;height:40px;border-radius:var(--r-sm);background:#fff;box-shadow:var(--lift)}.board-tools{display:flex;gap:.5rem}.board-tool{width:44px;height:44px;display:grid;place-items:center;border-radius:var(--r-sm);border:1px solid var(--sheet-edge);background:var(--sheet);color:var(--ink-soft);box-shadow:var(--lift);cursor:pointer;transition:color .16s ease-out,box-shadow .26s ease-out,translate .26s var(--ease)}.board-tool:hover{color:var(--ink);translate:0 -2px;box-shadow:var(--lift-hover)}.board-tool svg{transition:transform .36s var(--spring)}.board-tool:hover svg{transform:rotate(-12deg)}.board-hero{width:min(1320px,100% - 2rem);margin:0 auto;padding:clamp(1.5rem,3.5vh,3rem) 0 clamp(2.5rem,6vh,4.5rem);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start}.notice{--tilt: -.7deg;--overlap: 3.5rem;grid-column:1 / 7;grid-row:1;z-index:2;margin-top:clamp(.5rem,3.5vh,3rem);padding:clamp(2rem,3.4vw,3.25rem) calc(clamp(1.5rem,3.4vw,3.25rem) + var(--overlap)) clamp(2rem,3vw,2.75rem) clamp(1.5rem,3.4vw,3.25rem)}.notice h1{font-weight:800;font-stretch:82%;font-size:min(clamp(2.5rem,1.3rem + 4vw,4.6rem),8vh);line-height:1;letter-spacing:-.02em;text-wrap:balance;max-width:12ch}.notice-lede{margin-top:1.25rem;max-width:44ch;font-size:clamp(1rem,.94rem + .3vw,1.15rem);line-height:1.5;color:var(--ink-soft);text-wrap:pretty}.notice-error{margin-top:1.25rem;display:flex;gap:.6rem;align-items:flex-start;padding:.85rem 1rem;border:1.5px solid color-mix(in srgb,var(--pen) 45%,transparent);border-radius:var(--r-md);background:var(--sheet);color:var(--ink);font-size:.95rem;line-height:1.4}.notice-error svg{flex:none;margin-top:.1rem;color:var(--pen)}.tickets{margin-top:2rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;max-width:34rem}.board .ticket{--ticket-bg: color-mix(in srgb, var(--sheet) 70%, transparent);--ticket-line: var(--rule-strong);--stub-bg: var(--fill);grid-template-columns:var(--stub) minmax(0,1fr) auto;overflow:hidden;transition:transform .26s var(--ease),background-color .18s ease-out,border-color .18s ease-out}.board .ticket-stub{background:var(--stub-bg);transition:background-color .18s ease-out}.board .ticket-go{margin-right:1rem;color:var(--ticket-sub);transition:translate .3s var(--ease),color .18s ease-out}.board .ticket:hover:not(:disabled){--ticket-bg: var(--accent-soft);--ticket-line: var(--accent-line);--stub-bg: color-mix(in srgb, var(--accent) 24%, transparent);transform:translateY(-2px)}.board .ticket:hover:not(:disabled) .ticket-stub>*{transform:scale(1.1)}.board .ticket:hover:not(:disabled) .ticket-go{color:var(--ticket-fg);translate:3px 0}.board a.ticket:hover .ticket-go{translate:2px -2px}.board .ticket:active:not(:disabled){transform:translateY(0) scale(.985);transition-duration:90ms}.board .ticket:focus-visible{border-color:var(--pen);box-shadow:inset 0 0 0 2px var(--pen)}.tickets>.ticket:first-child,.memo .ticket{--ticket-bg: var(--accent);--ticket-fg: var(--accent-ink);--ticket-sub: color-mix(in srgb, var(--accent-ink) 70%, var(--accent));--ticket-line: var(--accent);--stub-bg: color-mix(in oklab, var(--accent) 88%, var(--accent-ink))}.tickets>.ticket:first-child{grid-column:1 / -1;min-height:4rem}.tickets>.ticket:first-child strong{font-size:1.12rem}.tickets>.ticket:first-child:hover:not(:disabled),.memo .ticket:hover:not(:disabled){--ticket-bg: color-mix(in oklab, var(--accent) 86%, var(--ink));--ticket-line: var(--ticket-bg);--stub-bg: color-mix(in oklab, var(--accent) 80%, var(--accent-ink))}.timetable{--tilt: 1deg;grid-column:7 / 13;grid-row:1;z-index:3;margin:0 0 0 -3.5rem;padding:1.5rem clamp(1rem,1.8vw,1.5rem) 1.75rem;transform-origin:2.75rem 0}.timetable-head strong{font-size:1.5rem;font-weight:850;font-stretch:72%;line-height:1;letter-spacing:-.01em}.timetable-head strong span{color:var(--ink-soft)}.tt-next{margin:.9rem 0 1rem;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.1rem .9rem;padding:.5rem 1rem;border:1px solid;border-radius:var(--r-md)}.tt-next-time{grid-row:1 / 3;font-size:1.7rem;font-weight:850;font-stretch:68%;line-height:1;font-variant-numeric:tabular-nums}.tt-next-label{font-size:.68rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.tt-next-main{grid-column:2;display:flex;align-items:baseline;gap:.5rem;min-width:0}.tt-next-main strong{font-size:.98rem;font-weight:750;font-stretch:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-next-main span{flex:none;font-size:.82rem;color:var(--ink-soft)}.tt-next-when{grid-column:3;grid-row:1 / 3;font-size:1.2rem;transform:rotate(-3deg);white-space:nowrap}.timetable-grid{--slot: clamp(2.6rem, 4.8vh, 3rem);display:grid;grid-template-columns:2.4rem repeat(5,minmax(0,1fr));grid-template-rows:2.6rem repeat(var(--rows),var(--slot));column-gap:4px;background-image:linear-gradient(var(--rule) 1px,transparent 1px);background-size:100% var(--slot);background-position:0 2.6rem;background-repeat:repeat-y;font-variant-numeric:tabular-nums}.tt-day{grid-row:1;align-self:center;display:flex;align-items:baseline;justify-content:center;gap:.3rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.tt-day strong{font-size:1.15rem;font-weight:850;font-stretch:72%;line-height:1;letter-spacing:0;color:var(--ink)}.tt-day.is-today{color:var(--pen)}.tt-day.is-today strong{padding:.12rem .4rem;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink)}.tt-now{position:relative;z-index:2;pointer-events:none}.tt-now:before{content:"";position:absolute;top:80%;left:0;right:0;height:2px;background:var(--pen)}.tt-now:after{content:"";position:absolute;top:calc(80% - 4px);left:-5px;width:10px;height:10px;border-radius:50%;background:var(--pen)}.tt-hour{grid-column:1;font-size:.78rem;color:var(--ink-soft);padding-top:.15rem}.tt-course{--course-bg: oklch(.92 .055 var(--h));--course-line: oklch(.74 .11 var(--h));--course-soft: oklch(.44 .07 var(--h));--fluo: oklch(.82 .13 var(--h));--fluo-ink: oklch(.26 .05 var(--h));position:relative;color:oklch(.26 .05 var(--h));isolation:isolate;margin:3px 0;padding:.4rem .55rem;border:1px solid var(--course-line);border-left-width:4px;border-radius:var(--r-sm);background:var(--course-bg);display:flex;flex-direction:column;gap:.1rem;min-width:0;font-stretch:90%;line-height:1.15;transition:transform .22s var(--ease),box-shadow .22s ease-out}.tt-course:hover{z-index:3;transform:translateY(-2px);box-shadow:0 8px 16px -10px oklch(.35 .1 var(--h) / .7)}.tt-room{--pen: #cf3f80}.tt-course strong{font-size:.86rem;font-weight:750;font-stretch:78%;overflow-wrap:break-word;text-wrap:balance}.tt-time,.tt-room{font-size:.76rem;color:var(--course-soft)}.tt-time{font-weight:600}.tt-room :is(s,.pen){white-space:nowrap}.tt-room s{text-decoration-color:var(--pen);text-decoration-thickness:2px}.tt-room .pen{font-family:var(--hand);font-size:.95rem;color:var(--pen);line-height:1}.tt-course.is-next .marker{animation-delay:1s}.timetable-sample{position:absolute;right:1.25rem;bottom:.45rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.showcase{width:min(1320px,100% - 2rem);margin:0 auto;padding:0 0 clamp(1rem,4vh,3rem);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(1.25rem,2.5vw,2.5rem) clamp(1rem,2vw,2rem);align-items:start}.showcase-label{--tilt: -.8deg;grid-column:1 / 5;grid-row:1;z-index:2;align-self:start;margin-top:clamp(2rem,8vh,5rem);padding:clamp(1.5rem,2.6vw,2.25rem)}.showcase-label h2{font-weight:800;font-stretch:84%;font-size:clamp(1.75rem,1.2rem + 1.6vw,2.5rem);line-height:1.05;letter-spacing:-.015em;text-wrap:balance}.showcase-label p{margin-top:.75rem;font-size:.92rem;color:var(--ink-soft)}.shot{position:relative;margin:0;min-width:0}.shot img{display:block;width:100%;height:auto}.shot figcaption{margin-top:.6rem;font-size:1.35rem;transform:rotate(-2deg)}.shot-web{--tilt: .6deg;grid-column:5 / 13;grid-row:1;margin-left:-3rem;transform-origin:45% 0}.shot-web .tape{left:calc(45% - 48px);z-index:4}.shot-web img{padding:clamp(.4rem,.8vw,.7rem);border:1px solid var(--sheet-edge);border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--lift)}.shot-pwa{--tilt: -2.5deg;grid-column:2 / 5;grid-row:2;align-self:start;z-index:2;margin-top:-1.5rem}.shot-pwa .pin{top:-10px;left:50%;margin-left:-11px;z-index:4}.phone{overflow:hidden;border:clamp(6px,.7vw,10px) solid #0c0c0b;border-radius:clamp(1.4rem,2.6vw,2.4rem);background:#0c0c0b;box-shadow:0 0 0 1px #ffffff24,var(--lift)}.shot-native{grid-column:6 / 11;grid-row:2;margin-top:-1rem}.shot-native img{filter:drop-shadow(0 18px 24px rgba(0,0,0,.45))}.shot-native figcaption{text-align:center}.shot-web img,.shot-pwa .phone,.shot-native img{transition:translate .36s var(--ease),box-shadow .3s ease-out,filter .3s ease-out}.shot-web:hover img,.shot-pwa:hover .phone,.shot-native:hover img{translate:0 -5px}.shot-web:hover img{box-shadow:var(--lift-hover)}.shot-native:hover img{filter:drop-shadow(0 24px 28px rgba(0,0,0,.5))}.board-row{width:min(1320px,100% - 2rem);margin:0 auto;padding:clamp(1rem,4vh,3rem) 0 clamp(3rem,8vh,6rem);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(1.5rem,3vw,3rem);align-items:start}.board-row h2{font-weight:800;font-stretch:84%;font-size:clamp(1.75rem,1.2rem + 1.6vw,2.5rem);line-height:1.05;letter-spacing:-.015em;text-wrap:balance;margin-bottom:1.5rem}.matrix{--tilt: .4deg;grid-column:1 / 8;padding:clamp(1.75rem,3vw,2.75rem);transform-origin:2.75rem 0}.matrix table{width:100%;border-collapse:collapse;font-size:.98rem}.matrix thead th{position:relative;padding:0 .5rem .75rem;font-weight:750;font-stretch:80%;text-transform:uppercase;letter-spacing:.03em;font-size:.85rem;text-align:center;border-bottom:1px solid var(--rule-strong)}.matrix thead td{border-bottom:1px solid var(--rule-strong)}.matrix thead th.is-yours{color:var(--pen)}.matrix thead th.is-yours:after{content:"";position:absolute;inset:-.45rem -.15rem .2rem;border:2px solid var(--pen);border-radius:48% 52% 45% 55%/55% 45%;transform:rotate(-3deg);pointer-events:none}.matrix tbody th{text-align:left;font-weight:500;padding:.7rem .5rem .7rem 0}.matrix tbody td{text-align:center;vertical-align:middle;width:20%}.matrix tbody tr+tr>*{border-top:1px solid var(--rule)}.matrix tbody svg{display:inline-block;vertical-align:middle}.matrix tbody svg:not(.is-off){color:var(--paper-tone)}.matrix .is-off{color:var(--ink-soft);opacity:.6}.matrix tbody tr{transition:background-color .16s ease-out}.matrix tbody tr:hover{background:color-mix(in oklab,var(--paper-tone) 10%,transparent)}.memo{--tilt: -1.2deg;grid-column:8 / 13;margin-top:clamp(1rem,6vh,4rem);padding:clamp(1.75rem,3vw,2.5rem);transform-origin:calc(100% - 4rem) 0}.memo h2{font-size:clamp(1.6rem,1.2rem + 1.2vw,2.1rem);margin-bottom:1rem}.memo p{color:var(--ink-soft);line-height:1.55;margin-bottom:1.5rem;max-width:42ch}.memo .ticket{width:100%}.board .tape-memo{left:auto;right:1.5rem;transform:rotate(6deg)}:root:has(.board) .cookie-banner{font-family:Archivo,system-ui,sans-serif}.board-footer{margin-top:auto;width:min(1320px,100% - 2rem);margin-inline:auto;padding:1.5rem 0 2rem;border-top:1px solid var(--rule);display:grid;gap:.35rem;font-size:.85rem;line-height:1.5;color:var(--ink-soft)}.board-footer a:hover{color:var(--ink)}@media(min-width:1081px)and (max-width:1280px){.tt-room s{display:none}}@media(max-width:1080px){.notice,.timetable,.matrix,.memo{grid-column:1 / -1}.notice{--overlap: 0rem;grid-row:1;margin-top:.5rem}.timetable{grid-row:2;z-index:1;margin:-.75rem 0 0;max-width:760px;justify-self:end;width:100%}.memo{margin-top:0;max-width:560px;justify-self:end}.showcase-label{grid-column:1 / -1;justify-self:start;max-width:560px;margin-top:.5rem}.shot-web{grid-column:1 / -1;grid-row:2;margin:-.75rem 0 0}.shot-pwa{grid-column:1 / 5;grid-row:3;margin-top:0}.shot-native{grid-column:6 / 13;grid-row:3;margin-top:0}}@media(max-width:640px){.board-bar,.board-hero,.board-row,.board-footer{width:calc(100% - 2rem)}.notice{--tilt: -.5deg}.timetable{--tilt: .8deg;margin-top:1.75rem}.tickets{grid-template-columns:minmax(0,1fr)}.tt-next{grid-template-columns:auto minmax(0,1fr)}.tt-next-when{grid-column:2;grid-row:auto;font-size:1.1rem}.timetable-grid{--slot: 2.6rem;grid-template-columns:2.4rem minmax(0,1fr)}.tt-day:not(.is-today),.tt-course:not(.is-today){display:none}.tt-day.is-today,.tt-course.is-today,.tt-now{grid-column:2!important}.tt-day.is-today{justify-self:start;margin-left:.3rem}.tt-course strong{font-size:1rem}.tt-time,.tt-room{font-size:.88rem}.matrix table{font-size:.9rem}.matrix thead th{font-size:.72rem;padding-inline:.2rem}.showcase{grid-template-columns:repeat(6,minmax(0,1fr))}.shot-pwa{grid-column:1 / 4}.shot-native{grid-column:4 / -1;margin-top:2.5rem}.shot figcaption{font-size:1.15rem}}.notice{animation:sheet-in .65s var(--ease) backwards}.timetable{animation:sheet-in .65s var(--ease) .12s backwards}@keyframes sheet-in{0%{opacity:0;translate:0 18px;rotate:calc(var(--tilt) * 2.2)}}.board-hero .pin{animation:pin-in .46s var(--spring) .56s backwards}@keyframes pin-in{0%{opacity:0;translate:0 -10px;scale:1.4}}.timetable>.tape{animation:tape-stick .38s var(--ease) .64s backwards}.tt-course{animation:card-in .38s var(--ease) backwards;animation-delay:calc(.35s + var(--i, 0) * 60ms)}.tt-day.is-today strong{animation:pop-in .42s var(--spring) .3s backwards}.tt-now{animation:card-in .38s var(--ease) .9s backwards}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){.showcase>*,.board-row>*{animation:reveal linear both;animation-timeline:view();animation-range:entry 5% cover 25%}}}@keyframes reveal{0%{opacity:0;translate:0 32px}}@media(prefers-reduced-motion:reduce){.tt-course .marker{animation:none}.board .sheet,.board .shot,.board .ticket,.board-tool{transition:none}}.app{--drawer-w: 296px;height:100vh;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.course,.allday-course,.agenda-row{--course-bg: oklch(.92 .055 var(--h));--course-line: oklch(.74 .11 var(--h));--course-soft: oklch(.44 .07 var(--h));--course-ink: oklch(.26 .05 var(--h));--fluo: oklch(.82 .13 var(--h));--fluo-ink: var(--course-ink);--pen: #cf3f80;color:var(--course-ink)}.event-sheet{--course-bg: oklch(.29 .04 var(--h));--course-line: oklch(.74 .11 var(--h));--course-soft: oklch(.84 .04 var(--h))}:root[data-theme=light] .event-sheet{--course-bg: oklch(.955 .035 var(--h));--course-soft: oklch(.44 .07 var(--h))}body.has-modal{overflow:hidden}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.app-bar{display:flex;align-items:center;gap:.6rem 1.25rem;padding:1rem 1.5rem;min-width:0}.app-menu-btn{display:none}.app-brand{flex:0 0 calc(var(--drawer-w) - 1.25rem);display:flex;align-items:center;gap:.7rem;font-weight:800;font-stretch:85%;font-size:1.15rem;letter-spacing:-.01em}.app-brand img{width:36px;height:36px;border-radius:var(--r-sm);background:#fff;box-shadow:var(--lift)}.app-nav{display:flex;align-items:center;gap:.35rem}.app-title{min-width:0;font-size:1.6rem;font-weight:800;font-stretch:88%;line-height:1.1;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-title-year{color:var(--ink-soft)}.app-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.seg{display:inline-flex;gap:2px;padding:4px;border-radius:var(--r-pill);background:var(--fill)}.seg>button,.seg>label{position:relative;display:inline-flex;align-items:center;gap:.4rem;min-height:32px;padding:.3rem .95rem;border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-soft);font-weight:700;font-stretch:85%;font-size:.92rem;cursor:pointer;transition:background-color .16s ease-out,color .16s ease-out}.seg>button:hover,.seg>label:hover{color:var(--ink)}.seg>.is-on,.seg>.is-on:hover{background:var(--accent);color:var(--accent-ink);box-shadow:0 2px 8px -2px #503c964d}.seg input{position:absolute;opacity:0;pointer-events:none}.seg label:has(input:focus-visible){outline:3px solid var(--accent-line);outline-offset:2px}.app-body{display:grid;grid-template-columns:var(--drawer-w) minmax(0,1fr);gap:1.25rem;padding:0 1.5rem 1.5rem;min-height:0}.app-main{display:flex;flex-direction:column;gap:1rem;min-width:0;min-height:0}.drawer{display:flex;flex-direction:column;min-height:0;overflow:hidden;background:linear-gradient(180deg,color-mix(in oklab,var(--accent) 9%,transparent),transparent 22rem),var(--sheet);border-color:color-mix(in oklab,var(--accent) 22%,var(--sheet-edge))}.drawer-section.drawer-month{margin:.6rem;padding:.6rem .5rem .4rem;border-top:0;border-radius:var(--r-md);background:var(--fill)}.drawer-month+.drawer-section{border-top:0;padding-top:.5rem}.drawer-head{display:none}.drawer-scroll{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}.drawer-section{margin:0 .6rem;padding:.9rem .75rem;border-top:1px solid var(--rule)}.drawer-section:first-child{border-top:0}.drawer-section h3{font-size:.78rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.drawer-section-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.7rem}.drawer-section-toggle{width:100%;display:flex;align-items:center;gap:.5rem;padding:.2rem 0;border:0;background:transparent;cursor:pointer;text-align:left}.drawer-section-toggle svg{margin-left:auto;color:var(--ink-soft);transition:transform .2s var(--ease)}.drawer-section-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.drawer-count{min-width:1.5rem;padding:.1rem .5rem;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-ink);font-size:.75rem;font-weight:750;text-align:center;font-variant-numeric:tabular-nums}.drawer-filter{display:grid;gap:.5rem;margin-top:.6rem}.drawer-groups,.drawer-checks{list-style:none}.drawer-groups{display:grid;gap:.35rem}.drawer-groups li{display:flex;align-items:center;gap:.65rem;min-height:42px;padding:0 .3rem 0 .75rem;border-radius:var(--r-sm);background:var(--fill);font-size:.95rem;font-weight:600}.drawer-group-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-remove{width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--ink-soft);cursor:pointer}.drawer-remove:hover{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}.swatch{width:12px;height:12px;flex:none;border-radius:50%;box-shadow:inset 0 0 0 1px #0000001f}.drawer-checks{max-height:15rem;overflow-y:auto}.drawer-checks label{display:flex;align-items:center;gap:.65rem;min-height:38px;padding:0 .5rem;border-radius:var(--r-xs);font-size:.92rem;cursor:pointer;transition:background-color .16s ease-out}.drawer-checks label:hover{background:var(--fill)}.drawer-checks input{width:16px;height:16px;flex:none}.drawer-empty{font-size:.88rem;line-height:1.4;color:var(--ink-soft)}.drawer-actions{flex:1 0 auto;display:flex;flex-direction:column;gap:.1rem;padding:.6rem .75rem .75rem;border-top:1px solid var(--rule)}.drawer-actions button{display:flex;align-items:center;gap:.75rem;min-height:40px;padding:0 .6rem;border:0;border-radius:var(--r-sm);background:transparent;font-size:.95rem;font-weight:600;text-align:left;cursor:pointer;transition:background-color .16s ease-out}.drawer-actions button:hover{background:var(--accent-soft)}.drawer-actions button>:is(svg,img){flex:none;box-sizing:content-box;padding:6px;border-radius:10px;background:oklch(.78 .09 var(--ic, 260) / .16);color:oklch(.82 .1 var(--ic, 260))}:root[data-theme=light] .drawer-actions button>:is(svg,img){background:oklch(.94 .045 var(--ic, 260));color:oklch(.52 .13 var(--ic, 260))}.drawer-actions button:nth-child(1){--ic: 350}.drawer-actions button:nth-child(2){--ic: 285}.drawer-actions button:nth-child(3){--ic: 75}.drawer-actions button:nth-child(4){--ic: 150}.drawer-actions button:nth-child(5){--ic: 235}.drawer-actions>:nth-last-child(2){margin-bottom:.75rem}.drawer-scroll>*{flex-shrink:0}.drawer-actions .is-logout{margin-top:auto;color:var(--ink-soft)}.drawer-actions .is-logout>svg,:root[data-theme=light] .drawer-actions .is-logout>svg{background:var(--fill);color:var(--ink-soft)}.drawer-actions .is-logout:hover{background:color-mix(in srgb,var(--pen) 12%,transparent);color:var(--ink)}.month{width:100%}.month button{border:0;background:transparent;cursor:pointer}.month .react-calendar__navigation{display:flex;align-items:center;margin-bottom:.35rem}.month .react-calendar__navigation button{min-width:34px;height:34px;border-radius:50%;font-size:1.1rem}.month .react-calendar__navigation__label{border-radius:var(--r-pill)!important;font-size:1rem!important;font-weight:800;font-stretch:90%;text-transform:capitalize}.month .react-calendar__navigation button:hover:not(:disabled),.month .react-calendar__tile:hover{background:var(--fill-strong)}.month .react-calendar__month-view__weekdays{padding-bottom:.2rem;text-align:center;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.month abbr[title]{text-decoration:none}.month .react-calendar__tile{position:relative;height:33px;border-radius:var(--r-pill);font-size:.85rem;font-variant-numeric:tabular-nums}.month .react-calendar__month-view__days__day--neighboringMonth{color:color-mix(in srgb,var(--ink-soft) 60%,transparent)}.month .react-calendar__tile--now abbr{font-weight:850}.month .react-calendar__month-view__days .react-calendar__tile--now:not(.react-calendar__tile--active):after,.day-strip .is-today strong:after{content:"";position:absolute;left:50%;top:50%;width:1.95em;height:1.55em;border:2px solid var(--pen);border-radius:52% 48% 55% 45%/50% 58% 42% 50%;transform:translate(-50%,-50%) rotate(-8deg);pointer-events:none}.month .react-calendar__year-view .react-calendar__tile,.month .react-calendar__decade-view .react-calendar__tile{height:40px;padding:0 2px;border-radius:var(--r-sm);font-size:.85rem;font-weight:650;text-transform:capitalize}.month .react-calendar__tile--now:not(.react-calendar__month-view__days__day):not(.react-calendar__tile--hasActive):not(.react-calendar__tile--active){color:var(--pen);font-weight:800}.month .react-calendar__navigation__label:not(:disabled):after{content:"";display:inline-block;width:.4em;height:.4em;margin:0 0 .25em .5em;border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);transform:rotate(45deg)}.month .react-calendar__tile.react-calendar__tile--hasActive,.month .react-calendar__tile.react-calendar__tile--active{background:var(--accent);color:var(--accent-ink);font-weight:800}.month .react-calendar__tile.react-calendar__tile--hasActive:hover,.month .react-calendar__tile.react-calendar__tile--active:hover{background:color-mix(in oklab,var(--accent) 85%,var(--ink))}.app-notes{display:flex;flex-wrap:wrap;align-items:stretch;gap:1rem}.next-up{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.15rem 1rem;min-width:min(100%,30rem);padding:.75rem 1.35rem;border:1px solid var(--sheet-edge);border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--lift);text-align:left;cursor:pointer;transition:transform .22s var(--ease)}.next-up:hover{transform:translateY(-2px);box-shadow:var(--lift-hover)}.next-up-label{grid-column:2;grid-row:1;font-size:.7rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.next-up-time{grid-row:1 / 3;font-size:1.9rem;font-weight:800;font-stretch:80%;line-height:1;font-variant-numeric:tabular-nums}.next-up-main{grid-column:2;display:flex;align-items:baseline;gap:.6rem;min-width:0}.next-up-main strong{font-size:1.05rem;font-weight:750;font-stretch:85%;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.next-up-main span{font-size:.88rem;color:var(--ink-soft)}.next-up-when{grid-column:3;grid-row:1 / 3;font-size:1.3rem;transform:rotate(-3deg);white-space:nowrap}.context-note,.error-note{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;padding:.65rem .75rem .65rem 1.25rem;border-radius:var(--r-lg);background:var(--sheet);box-shadow:var(--lift);font-size:.92rem}.context-note>span{color:var(--ink-soft)}.context-note strong{font-size:1.1rem;font-weight:800;font-stretch:88%}.error-note{flex:1 1 22rem;background:color-mix(in srgb,var(--pen) 10%,var(--sheet));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--pen) 45%,transparent),var(--lift)}.error-note>svg{color:var(--pen);flex:none}.error-note>span{flex:1}.planning{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.planning.is-loading:before{content:"";position:absolute;top:0;left:0;z-index:6;width:35%;height:3px;border-radius:var(--r-pill);background:var(--accent-line);animation:sweep 1.1s var(--ease) infinite}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(300%)}}.planner{--hour: 3.4rem;--gutter: 3rem;position:relative;flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto;padding:0 1.25rem 1.25rem .25rem}.planner-head,.planner-allday,.planner-body{display:grid;grid-template-columns:var(--gutter) repeat(var(--days),minmax(0,1fr))}.planner-head{position:sticky;top:0;z-index:5;padding:1.1rem 0 .75rem;border-bottom:1px solid var(--rule-strong)}.planner-head,.day-strip,.agenda-date{background:var(--sheet)}.planner-day{display:flex;align-items:baseline;justify-content:center;gap:.4rem;text-transform:uppercase}.planner-day span{font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--ink-soft)}.planner-day strong{position:relative;font-size:1.35rem;font-weight:800;font-stretch:82%;line-height:1;font-variant-numeric:tabular-nums}.planner-day.is-today span{color:var(--pen)}.planner-day.is-today strong{padding:.2rem .5rem;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink)}.planner-allday{grid-template-rows:repeat(var(--lanes, 1),auto);row-gap:4px;padding:.5rem 0;border-bottom:1px solid var(--rule)}.planner-allday-label{grid-column:1;grid-row:1 / -1;align-self:center;min-width:0;padding:0 .3rem 0 .6rem;font-size:.68rem;font-weight:600;font-stretch:75%;color:var(--ink-soft)}.allday-course{container-type:inline-size;display:flex;align-items:center;gap:.5rem;min-width:0;margin:0 4px;padding:.35rem .7rem;border:1px solid var(--course-line);border-radius:var(--r-xs);background:var(--course-bg);font-size:.82rem;font-weight:700;font-stretch:85%;text-align:left;white-space:nowrap;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s ease-out}.allday-course:hover{transform:translateY(-1px);box-shadow:var(--lift-hover)}.allday-course>svg{flex:none;color:var(--course-soft)}.allday-title{min-width:0;overflow:hidden;text-overflow:ellipsis}.allday-dates{flex:none;margin-left:auto;font-weight:600;color:var(--course-soft);font-variant-numeric:tabular-nums}@container (max-width: 15rem){.allday-dates{display:none}}.allday-course.goes-before{border-left-style:dashed;border-top-left-radius:0;border-bottom-left-radius:0;padding-left:.35rem}.allday-course.goes-after{border-right-style:dashed;border-top-right-radius:0;border-bottom-right-radius:0;padding-right:.35rem}.planner-col.is-blocked{background:repeating-linear-gradient(-45deg,oklch(.74 .11 var(--h) / .1) 0 8px,transparent 8px 16px)}.planner-body{position:relative;flex:1 0 auto;min-height:calc(var(--hours) * var(--hour));background-image:repeating-linear-gradient(to bottom,var(--rule) 0 1px,transparent 1px calc(100% / var(--hours)))}.planner-hours{position:relative}.planner-hours span{position:absolute;left:.6rem;padding-top:.2rem;font-size:.75rem;font-weight:600;color:var(--ink-soft);font-variant-numeric:tabular-nums}.planner-col{position:relative;border-left:1px solid var(--rule)}.planner-empty{position:absolute;inset:6rem 0 auto var(--gutter);text-align:center;font-size:.95rem;color:var(--ink-soft);pointer-events:none}.course{position:absolute;container-type:size;display:flex;flex-direction:column;gap:.15rem;padding:.4rem .6rem;border:1px solid var(--course-line);border-left-width:4px;border-radius:var(--r-sm);background:var(--course-bg);color:var(--course-ink);text-align:left;line-height:1.15;overflow:hidden;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s ease-out}.course:hover{z-index:3;transform:translateY(-1px);box-shadow:var(--lift-hover)}.course-time{display:flex;align-items:center;gap:.3rem;font-size:.74rem;font-weight:600;color:var(--course-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.course-name{font-size:.88rem;font-weight:750;font-stretch:88%;overflow-wrap:anywhere;text-wrap:balance}.course-room{font-size:.76rem;color:var(--course-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-note{font-size:1.05rem;margin-top:.1rem}@container (max-height: 62px){.course-room{display:none}}@container (max-height: 40px){.course-time{display:none}}.is-cancelled{--course-soft: oklch(.5 .02 var(--h));border-style:dashed;border-color:oklch(.72 .03 var(--h));background:repeating-linear-gradient(-45deg,transparent 0 6px,rgba(40,50,70,.08) 6px 7px),oklch(.9 .012 var(--h));color:oklch(.42 .02 var(--h));opacity:.8}.is-cancelled :is(.course-name,.agenda-main strong){text-decoration:line-through 2px var(--pen)}.exam-tag{flex:none;align-self:flex-start;display:inline-flex;align-items:center;padding:.12rem .4rem;border-radius:4px;background:var(--exam);color:var(--exam-ink);font-size:.62rem;font-weight:800;font-stretch:90%;letter-spacing:.07em;line-height:1.25;text-transform:uppercase;rotate:-2deg}.is-exam:not(.is-cancelled):is(.course,.agenda-row,.allday-course){border-width:2px;border-color:var(--exam)}.course.is-exam:not(.is-cancelled){border-left-width:5px}.agenda-row.is-exam:not(.is-cancelled){border-left-width:6px}.agenda-main .exam-tag{justify-self:start;margin-bottom:.15rem;font-size:.64rem;color:var(--exam-ink)}.allday-course .exam-tag{align-self:center;rotate:0deg}.event-tags>.exam-tag{padding:.3rem .7rem;border-radius:var(--r-pill);background:var(--exam);color:var(--exam-ink);font-size:.75rem;rotate:0deg}.next-up.is-exam{box-shadow:inset 0 0 0 1.5px var(--exam-line),var(--lift)}.next-up.is-exam:hover{box-shadow:inset 0 0 0 1.5px var(--exam-line),var(--lift-hover)}.next-up.is-exam .next-up-label{color:var(--exam-line)}.exam-note{flex:1 1 22rem;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;padding:.65rem .75rem .65rem 1.1rem;border-radius:var(--r-lg);background:color-mix(in srgb,var(--exam-line) 9%,var(--sheet));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--exam-line) 55%,transparent),var(--lift);font-size:.92rem}.exam-note>svg{flex:none;color:var(--exam-line)}.exam-note>strong{font-size:1.05rem;font-weight:800;font-stretch:88%}.exam-note-list{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0}.exam-chip{display:inline-flex;align-items:baseline;gap:.45rem;max-width:100%;min-height:32px;padding:.35rem .8rem;border:1px solid color-mix(in srgb,var(--exam-line) 40%,transparent);border-radius:var(--r-pill);background:var(--sheet);color:var(--ink);font-size:.85rem;font-weight:700;font-stretch:88%;cursor:pointer;transition:background-color .16s ease-out,border-color .16s ease-out,transform .2s var(--ease)}.exam-chip>span{min-width:0;max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exam-chip time{flex:none;font-weight:600;color:var(--ink-soft);font-variant-numeric:tabular-nums}.exam-chip:hover{border-color:var(--exam-line);background:color-mix(in srgb,var(--exam-line) 12%,var(--sheet));transform:translateY(-1px)}.exam-note-more{font-weight:700;color:var(--ink-soft)}.now-line{position:absolute;left:-1px;right:0;z-index:4;height:2px;border-radius:var(--r-pill);background:var(--pen);pointer-events:none}.now-line:before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--pen)}.day-strip{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;padding:.7rem .6rem .6rem;border-bottom:1px solid var(--rule-strong)}.day-strip button{display:grid;justify-items:center;gap:.3rem;padding:.45rem 0 .5rem;border:0;border-radius:var(--r-md);background:transparent;cursor:pointer;transition:background-color .16s ease-out}.day-strip span{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.day-strip strong{position:relative;font-size:1.3rem;font-weight:800;font-stretch:82%;line-height:1;font-variant-numeric:tabular-nums}.day-strip i{width:4px;height:4px;border-radius:50%}.day-strip i.has-courses{background:var(--ink-soft)}.day-strip .is-on{background:var(--accent)}.day-strip .is-on :is(span,strong){color:var(--accent-ink)}.day-strip .is-on i.has-courses{background:var(--accent-ink)}.day-strip .is-on strong:after{display:none}.agenda{flex:1;min-height:0;overflow-y:auto;padding:0 clamp(1rem,2.5vw,2rem) 2rem}.agenda-day{scroll-margin-top:0}.agenda-date{position:sticky;top:0;z-index:2;display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem .75rem;padding:1.5rem 0 .65rem;border-bottom:1px solid var(--rule-strong);font-size:1.45rem;font-weight:800;font-stretch:86%;line-height:1.1;text-transform:capitalize}.agenda-date span{text-transform:none;font-size:.85rem;font-weight:600;font-stretch:90%;letter-spacing:.02em;color:var(--ink-soft)}.agenda-date .agenda-today{font-size:1.3rem;text-transform:none;letter-spacing:0;color:var(--pen);transform:rotate(-3deg)}.agenda ol{list-style:none;display:grid;gap:.6rem;padding-top:.9rem}.agenda-row{position:relative;width:100%;display:grid;grid-template-columns:3.6rem minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.85rem 1.1rem;border:1px solid var(--course-line);border-left-width:5px;border-radius:var(--r-md);background:var(--course-bg);text-align:left;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s ease-out}.agenda-row:hover{transform:translateY(-1px);box-shadow:var(--lift-hover)}.agenda-time{display:grid;font-variant-numeric:tabular-nums;line-height:1.2}.agenda-time span:first-child{font-size:1.05rem;font-weight:800;font-stretch:80%}.agenda-time span:last-child{font-size:.82rem;color:var(--course-soft)}.agenda-main{display:grid;gap:.1rem;min-width:0}.agenda-main strong{font-size:1.05rem;font-weight:750;font-stretch:85%;line-height:1.2}.agenda-main span{font-size:.86rem;color:var(--course-soft)}.agenda-note{font-size:1.2rem}.agenda-empty{flex:1;display:grid;place-content:center;justify-items:center;gap:1rem;padding:3rem 1.5rem;text-align:center;color:var(--ink-soft)}.agenda-empty p{max-width:30ch;font-size:1.05rem}.modal-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1.5rem;background:#080c148c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .18s ease-out}:root[data-theme=light] .modal-overlay{background:#3c2d6e38}.modal-sheet{width:min(640px,100%);max-height:min(88dvh,860px);display:flex;flex-direction:column;outline:none;animation:drop .26s var(--ease)}.modal-tape{left:calc(50% - 52px);transform:rotate(-3deg)}.modal-head{display:flex;align-items:flex-start;gap:1rem;margin:0 1.75rem;padding:2rem 0 1rem;border-bottom:1px solid var(--rule-strong)}.modal-title{flex:1;min-width:0}.tool-sheet{--accent: oklch(.83 .09 var(--ic));--accent-ink: oklch(.24 .05 var(--ic));--accent-soft: oklch(.8 .09 var(--ic) / .14);--accent-line: oklch(.76 .1 var(--ic));height:min(86dvh,620px);max-height:none;border-color:oklch(.8 .09 var(--ic) / .28);background:linear-gradient(180deg,oklch(.8 .09 var(--ic) / .1),transparent 14rem),var(--sheet)}:root[data-theme=light] .tool-sheet{--accent: oklch(.86 .075 var(--ic));--accent-ink: oklch(.3 .09 var(--ic));--accent-soft: oklch(.95 .035 var(--ic));--accent-line: oklch(.7 .11 var(--ic));border-color:oklch(.88 .05 var(--ic));background:linear-gradient(180deg,oklch(.95 .04 var(--ic)),transparent 14rem),var(--sheet)}.tool-sheet .modal-body{flex:1}.modal-icon{flex:none;display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--r-sm);background:oklch(.78 .09 var(--ic) / .18);color:oklch(.82 .1 var(--ic))}:root[data-theme=light] .modal-icon{background:oklch(.93 .045 var(--ic));color:oklch(.52 .13 var(--ic))}.app-rooms-btn svg{color:#88d8ae}:root[data-theme=light] .app-rooms-btn svg{color:#007d51;color:oklch(.52 .13 160)}.modal-title h2{display:flex;align-items:center;gap:.75rem;font-size:1.65rem;font-weight:800;font-stretch:86%;line-height:1.1;letter-spacing:-.01em;text-wrap:balance}.modal-body{position:relative;z-index:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:grid;align-content:start;gap:1.25rem;padding:1.35rem 1.75rem 1.75rem}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.75rem 1.5rem;border-top:1px solid var(--rule)}.modal-foot-note,.modal-hint{font-size:.85rem;color:var(--ink-soft)}.modal-hint a{color:var(--ink);text-underline-offset:.2em}.pen-note{display:flex;align-items:flex-start;gap:.6rem;padding:.85rem 1rem;border:0;border-radius:var(--r-md);background:color-mix(in srgb,var(--pen) 12%,transparent);font-size:.92rem;line-height:1.4}.pen-note svg{flex:none;color:var(--pen)}@keyframes fade{0%{opacity:0}}@keyframes drop{0%{opacity:0;transform:translateY(10px)}}.event-sheet{--sheet: var(--course-bg);--ink-soft: var(--course-soft)}.is-struck{text-decoration:line-through 3px var(--pen)}.event-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.7rem}.event-tags>span{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .7rem;border:0;border-radius:var(--r-pill);background:var(--fill-strong);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.event-tags>.event-cancelled{border:0;background:transparent;padding:0 .3rem 0 0;font-size:1.3rem;text-transform:none;letter-spacing:0;transform:rotate(-4deg)}.skeleton{display:inline-block;border-radius:var(--r-pill);background:var(--fill-strong);animation:skeleton-pulse 1.2s ease-in-out infinite alternate}.skeleton:before{content:" "}.skeleton-chip{width:6.5rem}.skeleton-line{width:4.5rem}.skeleton-wide{width:11rem}@keyframes skeleton-pulse{to{opacity:.45}}.reveal{display:inline-block;-webkit-mask-image:linear-gradient(90deg,#000 42%,transparent 58%);mask-image:linear-gradient(90deg,#000 42%,transparent 58%);-webkit-mask-size:260% 100%;mask-size:260% 100%;animation:curtain-reveal .62s cubic-bezier(.22,1,.36,1) calc(var(--i, 0) * 70ms) both}.event-tags>.reveal{display:inline-flex}@keyframes curtain-reveal{0%{-webkit-mask-position:100% 0;mask-position:100% 0;translate:-6px 0;filter:blur(3px);opacity:.6}to{-webkit-mask-position:0 0;mask-position:0 0;translate:0 0;filter:blur(0);opacity:1}}.facts>div{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--rule)}.facts>div:first-child{padding-top:.2rem}.facts dt{padding-top:.15rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.facts dd{font-size:1rem;line-height:1.35;min-width:0}.facts dd>strong,.facts-item strong{font-weight:700}.facts-sub{display:block;margin-top:.1rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.facts-list{display:grid;gap:.45rem}.facts-item{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .8rem}.facts-links{display:inline-flex;flex-wrap:wrap;gap:.15rem .6rem}.facts-links :is(a,button){display:inline-flex;align-items:center;gap:.3rem;padding:.15rem 0;border:0;background:transparent;color:var(--ink-soft);font-size:.86rem;font-weight:600;text-decoration:underline 1px;text-underline-offset:.22em;cursor:pointer}.facts-links :is(a,button):hover{color:var(--ink)}.facts-chips{display:flex;flex-wrap:wrap;gap:.4rem}.facts-chips button{padding:.35rem .85rem;border:0;border-radius:var(--r-pill);background:var(--fill-strong);font-size:.88rem;font-weight:650;cursor:pointer;transition:background-color .16s ease-out}.facts-chips button:hover{background:var(--accent-soft)}.facts-url{display:inline-flex;align-items:flex-start;gap:.35rem;color:var(--ink);word-break:break-all;text-underline-offset:.2em}.facts-url svg{flex:none;margin-top:.2em}.tree{list-style:none}.tree .tree{margin-left:.85rem;padding-left:.9rem;border-left:1px solid var(--rule)}.tree-row{display:flex;align-items:center;gap:.2rem;min-height:38px}.tree-row label,label.tree-row{flex:1;display:flex;align-items:center;gap:.55rem;min-height:36px;padding:.3rem .6rem;border-radius:var(--r-xs);font-size:.95rem;cursor:pointer}.tree-row label:hover,label.tree-row:hover{background:var(--fill-strong)}.tree-row.is-selected label{font-weight:700}.tree-row input{width:16px;height:16px;flex:none}.tree-toggle{width:28px;height:28px;flex:none;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--ink-soft);cursor:pointer}button.tree-toggle:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 8%,transparent)}.tree-toggle svg{transition:transform .2s var(--ease)}.tree-toggle.is-open svg{transform:rotate(90deg)}.rooms-form{display:grid;gap:1.25rem}.rooms-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1rem}.rooms-fields>.field:first-child{grid-column:1 / -1}.stepper{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.stepper .input{width:4.75rem;text-align:center;font-variant-numeric:tabular-nums}.stepper>span{font-size:.9rem;color:var(--ink-soft)}.rooms-where{max-height:13rem;overflow-y:auto;padding:.6rem .9rem .8rem;border:0;border-radius:var(--r-md);background:var(--fill)}.rooms-where legend{padding:0 .35rem}.rooms-submit{justify-self:start;min-width:min(100%,17rem)}.room-status{display:flex;align-items:center;gap:.55rem;padding:.8rem 1rem;border:0;border-radius:var(--r-md);background:#57bc8a2e;font-weight:650}.room-status.busy{background:color-mix(in srgb,var(--pen) 14%,transparent)}.room-status.busy svg{color:var(--pen)}.rooms-results h3{padding-bottom:.55rem;border-bottom:1px solid var(--rule-strong);font-size:1.25rem;font-weight:800;font-stretch:86%}.rooms-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.rooms-table :is(th,td){padding:.55rem .4rem;border-bottom:1px solid var(--rule);text-align:left;vertical-align:middle}.rooms-table thead th{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}.rooms-table tbody th{font-weight:700}.rooms-table td{font-size:.92rem}.rooms-actions{display:flex;justify-content:flex-end;gap:.35rem}.settings-block{padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.settings-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1.25rem}.settings-row h3,.settings-block>h3{font-size:1rem;font-weight:750;font-stretch:88%}.settings-row p,.settings-block>p{max-width:54ch;margin-top:.2rem;font-size:.9rem;line-height:1.45;color:var(--ink-soft)}.settings-block strong{color:var(--ink)}.settings-facts{margin:.7rem 0 0 1.1rem;display:grid;gap:.25rem;font-size:.88rem;line-height:1.45;color:var(--ink-soft)}.settings-link{display:inline-flex;align-items:center;gap:.3rem;margin-top:.75rem;font-size:.92rem;font-weight:650;color:var(--ink);text-underline-offset:.22em}.settings-row .settings-kpi{font-size:2.1rem;font-weight:800;font-stretch:82%;line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums}.settings-row .settings-error{color:var(--pen)}.settings-disclaimer{border-bottom:0;padding-bottom:0}.notif-field{display:grid;gap:.5rem;border:0}.notif-field legend{margin-bottom:.5rem}.days-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.day-chip{min-width:48px;height:38px;padding:0 .7rem;border:0;border-radius:var(--r-pill);background:var(--fill-strong);font-size:.85rem;font-weight:700;text-transform:uppercase;cursor:pointer;transition:background-color .16s ease-out,color .16s ease-out}.day-chip.is-on{background:var(--accent);color:var(--accent-ink)}.notif-summary{font-size:.92rem;color:var(--ink-soft)}.notif-summary strong{color:var(--ink)}.notif-actions{display:flex;flex-wrap:wrap;gap:.5rem}@media(max-width:1179px){.app-menu-btn{display:inline-grid}.app-brand{flex-basis:auto}.app-body{grid-template-columns:minmax(0,1fr)}.drawer{position:fixed;top:0;bottom:0;left:0;z-index:60;width:min(340px,88vw);border-radius:0 var(--r-lg) var(--r-lg) 0;transform:translate(-105%);visibility:hidden;transition:transform .28s var(--ease),visibility 0s .28s}.drawer.is-open{transform:none;visibility:visible;transition:transform .28s var(--ease)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem 1rem 1.35rem;border-bottom:1px solid var(--rule)}.drawer-head strong{font-size:1.3rem;font-weight:800;font-stretch:88%}.drawer-scrim{position:fixed;inset:0;z-index:55;background:#080c1466;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .2s ease-out}}@media(min-width:1180px){.drawer-scrim{display:none}}@media(max-width:1179px){.app-brand span{display:none}}@media(max-width:1000px){.app-title-year,.app-rooms-btn span{display:none}.app-rooms-btn{padding-inline:.6rem}}@media(max-width:720px){.app-bar{flex-wrap:wrap;gap:.6rem;padding:.75rem 1rem .8rem}.app-brand{display:none}.app-title{order:1;flex:1 1 calc(100% - 140px);font-size:clamp(1.1rem,5.5vw,1.35rem)}.app-title-year{display:none}.app-nav{order:3}.app-actions{display:contents}.seg{order:4;margin-left:auto}.seg svg{display:none}.app-rooms-btn{order:2;width:40px;height:40px;padding:0;border-radius:var(--r-sm)}.app-body{padding:0 1rem 1rem}.app-main{gap:.75rem}.next-up{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"time main" "time when";gap:0 .9rem;min-width:0;width:100%;padding:.75rem 1.1rem}.next-up-label{display:none}.next-up-time{grid-area:time;font-size:1.85rem}.next-up-main{grid-area:main;flex-wrap:wrap;row-gap:0}.next-up-when{grid-area:when;justify-self:start;font-size:1.15rem;margin-top:.15rem}.context-note{width:100%}.planner{--hour: 3.6rem;--gutter: 2.6rem;padding-right:.6rem}.planner-hours span{left:.45rem}.planner-allday-label{padding-left:.45rem;font-size:.66rem;font-stretch:68%}.course{padding:.45rem .65rem}.course-name{font-size:1rem}.course-time,.course-room{font-size:.82rem}.agenda{padding-inline:1rem}.agenda-row{grid-template-columns:3.2rem minmax(0,1fr) auto;gap:.8rem;padding:.75rem .9rem}.modal-overlay{place-items:end stretch;padding:0}.modal-sheet{width:100%;max-height:92dvh;border-radius:var(--r-lg) var(--r-lg) 0 0;padding-bottom:env(safe-area-inset-bottom);animation-name:rise}.modal-head{margin:0 1.25rem;padding-top:1.6rem}.modal-title h2{font-size:1.45rem}.modal-body{padding:1.1rem 1.25rem 1.4rem}.modal-foot{padding:.9rem 1.25rem 1.1rem}.facts>div{grid-template-columns:minmax(0,1fr);gap:.25rem}.rooms-fields{grid-template-columns:minmax(0,1fr)}.rooms-type{display:none}.rooms-actions .btn{padding-inline:.5rem}}@keyframes rise{0%{transform:translateY(24px)}}.app-title-text{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;animation:card-in .3s var(--ease) backwards}.course,.allday-course{animation:card-in .34s var(--ease) backwards;animation-delay:calc(var(--col, 0) * 35ms)}.agenda-row{animation:card-in .32s var(--ease) backwards;animation-delay:calc(min(var(--i, 0),8)*30ms)}.course:active,.agenda-row:active{transform:scale(.98);transition-duration:90ms}.next-up{animation:card-in .42s var(--ease) backwards}.next-up-when,.agenda-date .agenda-today{animation:hand-write .65s .25s steps(18,end) both}.now-line:after{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--pen);animation:now-pulse 2.8s ease-out infinite;pointer-events:none}@keyframes now-pulse{0%{opacity:.55;scale:1}70%,to{opacity:0;scale:2.6}}.drawer-actions button>:is(svg,img){transition:transform .32s var(--spring),background-color .16s ease-out}.drawer-actions button:hover>:is(svg,img){transform:translateY(-1px) scale(1.08)}.drawer-actions button:nth-child(1):hover>svg{transform-origin:50% 25%;animation:bell-ring .65s ease-in-out}.drawer-actions button:nth-child(2):hover>svg{transform:rotate(75deg) scale(1.05)}.drawer-actions button:nth-child(3):hover>svg{transform:rotate(-24deg) scale(1.08)}.drawer-actions .is-logout:hover>svg{transform:translate(2px)}@keyframes bell-ring{0%,to{rotate:0deg}20%{rotate:14deg}40%{rotate:-12deg}60%{rotate:7deg}80%{rotate:-3deg}}.drawer-remove:hover svg{transform:rotate(90deg)}.drawer-remove svg,.tree-toggle svg{transition:transform .26s var(--spring)}.drawer-groups li,.drawer-filter{animation:card-in .26s var(--ease) backwards}.modal-icon{animation:pop-in .46s var(--spring) 90ms backwards}.modal-tape{animation:tape-stick .38s var(--ease) .15s backwards}.room-status,.rooms-results{animation:card-in .3s var(--ease) backwards}.pwa-install-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:10000;max-width:760px;margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:1rem 1.5rem;padding:1.1rem 1.35rem;border:0;border-radius:var(--r-lg);background:var(--sheet);color:var(--ink);box-shadow:var(--lift-hover);animation:pwa-rise .32s var(--ease)}@keyframes pwa-rise{0%{transform:translateY(14px);opacity:0}}.pwa-banner-content{flex:1;min-width:0}.pwa-banner-title{margin-bottom:.2rem;font-size:1.1rem;font-weight:800;font-stretch:88%}.pwa-banner-text{font-size:.9rem;line-height:1.4;color:var(--ink-soft)}.pwa-banner-beta{margin-top:.35rem;font-size:.82rem;font-weight:650}.pwa-banner-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.pwa-banner-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.5rem 1.1rem;border:0;border-radius:var(--r-pill);background:var(--fill);color:var(--ink);font-size:.92rem;font-weight:700;font-stretch:85%;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .16s ease-out}.pwa-banner-btn.install{background:var(--accent);color:var(--accent-ink)}.pwa-banner-btn.dismiss:hover{background:var(--fill-strong)}@media(max-width:640px){.pwa-install-banner{flex-direction:column;align-items:stretch}.pwa-banner-btn{flex:1}}body.offline:after{content:"Hors ligne : planning en cache";position:fixed;top:8px;left:50%;z-index:9999;padding:.35rem .95rem;border:1.5px solid color-mix(in srgb,var(--pen) 50%,transparent);border-radius:var(--r-pill);background:var(--sheet);color:var(--ink);box-shadow:var(--lift);font:700 .82rem var(--print);transform:translate(-50%);pointer-events:none}.cookie-banner{position:fixed;left:16px;right:16px;bottom:16px;max-width:760px;margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:1rem 1.5rem;padding:1.1rem 1.35rem;border-radius:var(--r-lg, 22px);background:var(--bg-secondary);color:var(--text-primary);border:0;box-shadow:var(--lift-hover, 0 16px 32px -16px rgba(0, 0, 0, .4));z-index:10001;animation:cookie-slide-up .32s cubic-bezier(.16,1,.3,1)}@keyframes cookie-slide-up{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.cookie-banner__content{flex:1}.cookie-banner__title{font-weight:750;font-size:1rem;margin-bottom:.25rem}.cookie-banner__text{font-size:.88rem;line-height:1.45;color:var(--text-secondary)}.cookie-banner a{color:var(--text-primary);text-decoration:underline;text-underline-offset:.2em}.cookie-banner__actions{display:flex;gap:.5rem;flex-shrink:0}.cookie-banner__btn{min-height:44px;padding:.5rem 1.2rem;border-radius:var(--r-pill, 999px);border:0;font:inherit;font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .18s cubic-bezier(.16,1,.3,1)}.cookie-banner__btn:hover{transform:translateY(-1px)}.cookie-banner__btn:focus-visible{outline:3px solid var(--accent-color);outline-offset:2px}.cookie-banner__btn--accept{background:var(--accent);color:var(--accent-ink)}.cookie-banner__btn--decline{background:var(--fill-strong);color:var(--text-primary)}@media(max-width:720px){.cookie-banner{flex-direction:column;align-items:stretch}.cookie-banner__btn{flex:1}}@media(prefers-reduced-motion:reduce){.cookie-banner{animation:none}}.legal-page{min-height:100vh;min-height:100dvh}.legal-shell{width:min(1040px,100% - 2rem);margin:0 auto;padding:1rem 0 3rem}.legal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:2rem}.legal-brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--ink);font-size:1.2rem;font-weight:800;font-stretch:85%;text-decoration:none}.legal-brand img{width:40px;height:40px;border-radius:var(--r-sm);background:#fff;box-shadow:var(--lift)}.legal-sheet{padding:clamp(1.75rem,4vw,3.5rem)}.legal-sheet>.tape{left:2.4rem}.legal-hero{max-width:46rem;padding-bottom:2rem}.legal-hero h1{font-size:clamp(2.2rem,1.3rem + 3.4vw,3.8rem);font-weight:800;font-stretch:82%;line-height:1;letter-spacing:-.02em;text-wrap:balance}.legal-hero>p{max-width:42ch;margin:1.25rem 0 .75rem;font-size:clamp(1rem,.94rem + .3vw,1.15rem);line-height:1.55;color:var(--ink-soft)}.legal-updated{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.legal-nav{display:flex;flex-wrap:wrap;gap:.5rem;padding:.4rem 0;font-size:.88rem;font-weight:700}.legal-nav a,.legal-copy a{color:var(--ink);text-underline-offset:.22em;text-decoration-thickness:1px}.legal-nav a{padding:.4rem .9rem;border-radius:var(--r-pill);background:var(--fill);text-decoration:none;transition:background-color .16s ease-out}.legal-nav a:hover{background:var(--accent-soft)}.legal-section{padding:2.75rem 0;border-bottom:1px solid var(--rule);scroll-margin-top:1rem}.legal-section:last-of-type{border-bottom:0;padding-bottom:.5rem}.legal-section--split,.legal-section--mentions{display:grid;grid-template-columns:minmax(200px,.7fr) minmax(0,1.3fr);gap:2.5rem}.legal-section h2{font-size:clamp(1.6rem,1.15rem + 1.4vw,2.25rem);font-weight:800;font-stretch:84%;line-height:1.05;letter-spacing:-.015em;text-wrap:balance}.legal-section-intro{margin-bottom:1rem}.legal-copy{max-width:68ch;font-size:1rem;line-height:1.6;color:color-mix(in srgb,var(--ink) 86%,var(--ink-soft))}.legal-copy p{margin-bottom:1rem}.legal-copy strong{color:var(--ink)}.legal-table-wrap{margin-top:1.5rem;overflow-x:auto}.legal-table{width:100%;min-width:680px;border-collapse:collapse;text-align:left}.legal-table th{padding:0 .9rem .6rem 0;border-bottom:1px solid var(--rule-strong);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.legal-table td{padding:.85rem .9rem .85rem 0;border-bottom:1px solid var(--rule);vertical-align:top;font-size:.9rem;line-height:1.5;color:color-mix(in srgb,var(--ink) 86%,var(--ink-soft))}.legal-note{margin-top:1.25rem;padding:.9rem 1.1rem;border-radius:var(--r-md);background:color-mix(in srgb,var(--pen) 12%,transparent);font-size:.92rem;line-height:1.5}.legal-consent{display:flex;align-items:center;justify-content:space-between;gap:1rem 1.5rem;margin-top:1.5rem;padding:1.1rem 1.25rem;border-radius:var(--r-md);background:var(--fill)}.legal-consent strong,.legal-consent span{display:block}.legal-consent span{margin-top:.2rem;font-size:.85rem;color:var(--ink-soft)}.legal-consent-actions{display:flex;flex-wrap:wrap;gap:.5rem}.legal-mentions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem 2rem}.legal-mentions-grid h3{margin-bottom:.35rem;font-size:.8rem;font-weight:750;text-transform:uppercase;letter-spacing:.05em;color:var(--ink)}.legal-mentions-grid p{font-size:.94rem}.legal-bottom-back{display:flex;justify-content:center;padding-top:2rem}@media(max-width:720px){.legal-section--split,.legal-section--mentions{grid-template-columns:minmax(0,1fr);gap:1rem}.legal-section{padding:2rem 0}.legal-consent{flex-direction:column;align-items:flex-start}.legal-mentions-grid{grid-template-columns:minmax(0,1fr)}}
