:root{--bg: #f9f9f9;--frame: #727174;--surface: #ffffff;--ink: #312c3b;--muted: #727174;--line: #e4e2e6;--accent: #e30613;--accent-dark: #c00511;--accent-ink: #ffffff;--warn-bg: #fef3c7;--warn-line: #f59e0b;--danger: #b91c1c;--radius: 8px;--font-display: "Century Gothic", CenturyGothic, "Avant Garde", "URW Gothic", Futura, "Trebuchet MS", sans-serif;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--frame);color:var(--ink);-webkit-font-smoothing:antialiased}button{font:inherit}h1,h2,h3{font-family:var(--font-display);font-weight:900;line-height:1.2;color:var(--accent)}.page{max-width:1100px;margin:0 auto;padding:1rem;background:var(--bg);min-height:100dvh}.topbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.topbar h1{font-size:1.3rem;margin:0;flex:1;min-width:0;overflow-wrap:anywhere}.topbar .subtitle{color:var(--muted);font-size:.85rem;width:100%;margin:-.35rem 0 0}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:.55rem .9rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;font-size:.95rem;white-space:nowrap}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.5;cursor:default}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}.field label{font-size:.85rem;color:var(--muted)}.field input,.field textarea,.field select{font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);width:100%}.error{color:var(--danger);font-size:.9rem;margin:.5rem 0}.hint{color:var(--muted);font-size:.85rem}.grid-scroller{overflow-x:auto;-webkit-overflow-scrolling:touch}table.session-grid{border-collapse:separate;border-spacing:6px;width:100%;min-width:640px}.session-grid th,.session-grid td{padding:0;vertical-align:top;min-width:140px}.session-grid th{background:var(--bg);font-size:.85rem;position:sticky;top:0;z-index:2;height:1px}.room-head{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .4rem;font-weight:600;text-align:center;overflow-wrap:anywhere;height:100%;display:flex;flex-direction:column;justify-content:center;border-bottom:5px solid var(--line)}.room-head.hue-0,.room-head.hue-1,.room-head.hue-2,.room-head.hue-3,.room-head.hue-4,.room-head.hue-5{background:var(--surface);color:var(--ink)}.room-head.hue-0{border-bottom-color:#3b82f6}.room-head.hue-1{border-bottom-color:#22c55e}.room-head.hue-2{border-bottom-color:#ec4899}.room-head.hue-3{border-bottom-color:#a855f7}.room-head.hue-4{border-bottom-color:#f97316}.room-head.hue-5{border-bottom-color:#06b6d4}.session-grid th.slot,.session-grid td.slot{background:var(--bg);font-family:var(--font-display);font-weight:900;font-size:.8rem;color:var(--ink);text-align:right;padding:.55rem .5rem 0 0;min-width:80px;width:80px;white-space:pre-line;position:sticky;left:0;z-index:2}.session-grid th.slot{z-index:3;color:var(--muted);font-size:.75rem}.slot-grid{min-width:640px}.slot-cols{display:grid;grid-template-columns:repeat(var(--cols),minmax(140px,1fr));gap:6px;align-items:stretch}.room-row{margin-bottom:1.1rem}.slot-band{margin-bottom:.9rem}.band-head{display:flex;align-items:baseline;gap:.7rem;padding:.2rem .1rem .4rem}.band-time{font-family:var(--font-display);font-weight:900;font-size:1.02rem;white-space:nowrap}.band-head .header-btn{width:auto;font-family:var(--font-display);font-weight:900;font-size:1.02rem;text-align:left;padding:0;white-space:nowrap}.band-rule{flex:1;border-top:1px solid var(--line);align-self:center}.session-card.parallel{border-color:#f59e0b}.parallel-tag{display:inline-block;margin-top:.3rem;background:#fef3c7;color:#92400e;border-radius:999px;font-size:.68rem;font-weight:700;padding:.1rem .5rem}.break-band{background:repeating-linear-gradient(135deg,#f3f1f5,#f3f1f5 10px,#edeaf0 10px 20px);border-radius:var(--radius);color:var(--muted);font-weight:600;font-size:.85rem;text-align:center;padding:.85rem .5rem;overflow-wrap:anywhere}.session-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px #0000000a;padding:.45rem .55rem;width:100%;text-align:left;display:block;min-height:3.2rem;position:relative}button.session-card{cursor:pointer}div.session-card{padding-right:2rem}.card-body{display:block;width:100%;background:none;border:none;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer}.card-body:disabled{cursor:default;opacity:1;color:inherit}.fav-btn{position:absolute;top:.15rem;right:.15rem;background:none;border:none;font-size:1.15rem;line-height:1;padding:.25rem;cursor:pointer;color:#c9c5cf}.fav-btn[aria-pressed=true]{color:#f59e0b}.session-card.break{background:#f1f5f9;border-color:#dbe2ea;color:var(--muted)}.check-field{display:flex;align-items:flex-start;gap:.5rem;font-size:.9rem;color:var(--muted);margin-bottom:.8rem;cursor:pointer}.check-field input{margin-top:.15rem}.session-card .title{display:block;font-weight:600;font-size:.9rem;overflow-wrap:anywhere}.session-card .presenter{display:block;font-size:.8rem;color:var(--muted);margin-top:.15rem}.session-card.low-confidence{background:var(--warn-bg);border-color:var(--warn-line)}.session-card.low-confidence .title:after{content:" ?";color:#b45309}.empty-cell{width:100%;min-height:3.2rem;border:1.5px dashed var(--line);border-radius:var(--radius);background:transparent;color:#c9c5cf;font-size:1.05rem;cursor:pointer}.empty-cell:hover{border-color:var(--accent);color:var(--accent)}.empty-cell.readonly{cursor:default;border:none}.header-btn{background:none;border:none;color:inherit;cursor:pointer;font:inherit;font-weight:600;width:100%;overflow-wrap:anywhere}.dialog-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:40;padding:1rem}@media(min-width:640px){.dialog-backdrop{align-items:center}}.dialog{background:var(--surface);border-radius:var(--radius);padding:1rem;width:100%;max-width:460px;max-height:90dvh;overflow-y:auto}.dialog h2{margin:0 0 .8rem;font-size:1.1rem}.dialog .actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap;margin-top:.6rem}.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:.6rem}.qr-wrap img{width:220px;height:220px;image-rendering:pixelated}.share-url{font-size:.8rem;word-break:break-all;background:var(--bg);padding:.5rem;border-radius:6px;width:100%}.capture-stage{position:relative;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:var(--radius);overflow:hidden;background:#111;max-width:100%}.capture-stage img{display:block;width:100%;height:auto;pointer-events:none}.capture-stage svg{position:absolute;inset:0;width:100%;height:100%}.corner-handle{fill:#eb1f38e6;stroke:#fff;stroke-width:2;cursor:grab}.quad-outline{fill:#eb1f381f;stroke:var(--accent);stroke-width:2}.preview-img{width:100%;border-radius:var(--radius);border:1px solid var(--line);display:block}.busy{display:flex;align-items:center;gap:.6rem;color:var(--muted);padding:1rem 0}.spinner{width:18px;height:18px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.review-photo{width:100%;border-radius:var(--radius);border:1px solid var(--line)}details.photo-details summary{cursor:pointer;color:var(--accent);margin-bottom:.5rem}.grid-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.grid-list a{display:block;padding:.7rem .9rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);text-decoration:none;font-weight:600}.grid-list a:hover{border-color:var(--accent)}.agenda{display:flex;flex-direction:column;gap:1rem}.agenda-slot{scroll-margin-top:.5rem}.agenda-slot.agenda-past{opacity:.65}.agenda-head{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;border-bottom:2px solid var(--line);padding:.35rem .1rem .45rem;font:inherit;font-weight:800;font-size:1.05rem;color:var(--ink);text-align:left;cursor:pointer;position:sticky;top:0;background:var(--bg);z-index:2}.agenda-head:disabled{cursor:default}.agenda-now .agenda-head{border-bottom-color:var(--accent)}.agenda-label{white-space:nowrap}.agenda-nowtag{background:var(--accent);color:#fff;font-size:.68rem;font-weight:700;padding:.12rem .45rem;border-radius:999px}.agenda-count{flex:1;min-width:0;color:var(--muted);font-weight:400;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.agenda-chev{color:var(--muted);font-weight:400}.agenda-body{padding-top:.55rem;display:flex;flex-direction:column;gap:.45rem}.session-card.list-card{background:var(--surface);border:1px solid var(--line);border-left-width:5px;box-shadow:0 1px 2px #0000000a;padding:.6rem 2.6rem .6rem .7rem}.session-card.list-card .title{font-size:.98rem;line-height:1.25}.session-card.list-card .presenter{margin-top:.25rem}.session-card.list-card .fav-btn{top:50%;transform:translateY(-50%);right:.25rem;font-size:1.45rem;width:2.4rem;height:2.75rem;display:flex;align-items:center;justify-content:center}.session-card.list-card.break{background:#f1f5f9;border-left-width:1px;padding-right:.7rem}.session-card.stripe-0{border-left-color:#3b82f6}.session-card.stripe-1{border-left-color:#22c55e}.session-card.stripe-2{border-left-color:#ec4899}.session-card.stripe-3{border-left-color:#a855f7}.session-card.stripe-4{border-left-color:#f97316}.session-card.stripe-5{border-left-color:#06b6d4}.session-card.break{border-left-color:var(--line)}.session-card.low-confidence{border-left-color:var(--warn-line)}.chip{display:inline-block;font-size:.72rem;font-weight:600;padding:.1rem .5rem;border-radius:999px;white-space:nowrap;margin-right:.3rem}.hue-0{background:#dbeafe;color:#1e40af}.hue-1{background:#dcfce7;color:#166534}.hue-2{background:#fce7f3;color:#9d174d}.hue-3{background:#f3e8ff;color:#6b21a8}.hue-4{background:#ffedd5;color:#9a3412}.hue-5{background:#cffafe;color:#155e75}.page.with-tabbar{padding-bottom:calc(4.6rem + env(safe-area-inset-bottom))}.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -2px 10px #0000000f;padding:.3rem 0 calc(.45rem + env(safe-area-inset-bottom));z-index:20}.tab{flex:1;background:none;border:none;font:inherit;font-size:.7rem;color:var(--muted);text-align:center;cursor:pointer;padding:.15rem 0}.tab.active{color:var(--accent);font-weight:700}.tab-ico{display:flex;justify-content:center;align-items:center;height:1.5rem;margin-bottom:.1rem;position:relative}.tab-ico svg{display:block}.tab-badge{position:absolute;top:-.25rem;left:calc(50% + .35rem);background:#b45309;color:#fff;border-radius:999px;font-size:.62rem;font-weight:700;padding:0 .32rem;line-height:1.5}.now-pill{position:fixed;bottom:calc(4.4rem + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--accent);color:#fff;border:none;font:inherit;font-size:.8rem;font-weight:600;padding:.45rem 1rem;border-radius:999px;box-shadow:0 3px 10px #00000040;cursor:pointer;z-index:21}.rooms-panel{display:flex;flex-direction:column;gap:1rem}.rooms-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.rooms-list li{display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;font-weight:600}.rooms-list li+li{border-top:1px solid var(--line)}.room-swatch{width:1rem;height:1rem;border-radius:4px;flex-shrink:0}.swatch-0{background:#3b82f6}.swatch-1{background:#22c55e}.swatch-2{background:#ec4899}.swatch-3{background:#a855f7}.swatch-4{background:#f97316}.swatch-5{background:#06b6d4}.floorplan{width:100%;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface)}.plan-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.9rem}.plan-list .session-card{margin-top:.35rem}.plan-slot{font-weight:600;font-size:.9rem;color:var(--muted)}
