:root{--bg:#0a0a0a;--surface:#141414;--surface2:#1c1c1c;--border:#2a2a2a;--text:#f9f6ef;--muted:#a8a29a;--accent:#f47321;--accent-hover:#f08545;--accent-dim:#c45a12;--ok:#3ecf8e;--warn:#f0b429;--danger:#e5484d;--radius:12px;--font:"Noto Sans TC", "PingFang HK", "Microsoft JhengHei", system-ui, sans-serif;--shell-max:480px;--content-max:1100px;--admin-max:1200px;--sidebar-w:200px;--bp:768px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.45}a{color:var(--accent);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.app-shell{min-height:100%;max-width:var(--shell-max);background:var(--bg);border-left:1px solid var(--border);border-right:1px solid var(--border);flex-direction:column;margin:0 auto;display:flex}.shell-body{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#0a0a0aeb;align-items:center;gap:8px;padding:12px 14px;display:flex;position:sticky;top:0}.topbar h1{flex:1;margin:0;font-size:1.05rem;font-weight:700}.topbar .badge{background:var(--surface2);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.7rem}.nav-top-desktop{display:none!important}.menu-toggle{border-color:var(--border);background:var(--surface2);justify-content:center;align-items:center;min-width:40px;min-height:36px;padding:6px 10px;font-size:1.25rem;line-height:1;display:inline-flex}.topbar-desktop-only{display:none}.menu-backdrop{z-index:40;cursor:pointer;background:#00000073;border:none;margin:0;padding:0;position:fixed;inset:0}.menu-drawer{z-index:50;background:var(--surface);border-left:1px solid var(--border);flex-direction:column;gap:4px;width:min(280px,86vw);height:100%;padding:56px 14px 24px;display:flex;position:fixed;top:0;right:0;overflow-y:auto;box-shadow:-8px 0 24px #00000059}.menu-drawer button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;padding:12px 14px;font-size:1rem;display:block}.menu-drawer button.active{background:var(--accent-dim);color:#fff;border-color:var(--accent)}.menu-drawer button:hover{background:var(--surface2)}.menu-drawer .menu-logout{border-top:1px solid var(--border);color:var(--muted);border-radius:0 0 10px 10px;margin-top:8px;padding-top:16px}.nav{border-bottom:1px solid var(--border);background:var(--surface);-webkit-overflow-scrolling:touch;gap:4px;padding:8px 10px;display:flex;overflow-x:auto}.nav button{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;flex:none;padding:8px 12px;font-size:.85rem}.nav button.active{background:var(--accent-dim);color:#fff;border-color:var(--accent)}.nav button:hover{color:var(--text)}.shell-member .nav-member-mobile{z-index:10;border-bottom:none;border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));order:3;justify-content:space-around;position:sticky;bottom:0}.shell-member .nav-member-mobile button{text-align:center;border-radius:10px;flex:1;padding:10px 6px;font-size:.8rem}.sidebar{display:none}.main{flex:1;min-width:0;padding:14px 14px 28px}.shell-member .main{padding-bottom:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:14px}.card h2,.card h3{margin:0 0 8px;font-size:1rem}.muted{color:var(--muted);font-size:.85rem}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.space-between{justify-content:space-between}.stack{flex-direction:column;gap:8px;display:flex}.btn{appearance:none;border:1px solid var(--border);background:var(--surface2);color:var(--text);cursor:pointer;border-radius:10px;padding:10px 14px;font-size:.9rem;font-weight:600}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text)}.btn-danger{border-color:var(--danger);color:#ffd4d6;background:#5a2a2e}.btn-ghost{background:0 0}.btn-sm{padding:6px 10px;font-size:.8rem}.btn-block{width:100%}.field{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.field label{color:var(--muted);font-size:.8rem}.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.field textarea{resize:vertical;min-height:72px}.notice{border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:10px 12px;font-size:.9rem}.notice.pay{border-color:var(--warn);color:#ffe6a8;background:#3a2e14}.notice.grace{border-color:var(--accent);color:#ffd4b8;background:#2a1a10}.notice.chase,.notice.warn{border-color:var(--danger);color:#ffd0d3;background:#3a1e22}.notice.ok{border-color:var(--ok);color:#b8f5d4;background:#143228}.notice.info{background:var(--surface2)}.tag{background:var(--surface2);color:var(--muted);border-radius:6px;padding:2px 7px;font-size:.7rem;display:inline-block}.tag.ok{color:var(--ok)}.tag.warn{color:var(--warn)}.tag.danger{color:var(--danger)}.list-item{border-bottom:1px solid var(--border);flex-direction:column;gap:4px;padding:12px 0;display:flex}.list-item:last-child{border-bottom:none}.login-screen{flex-direction:column;justify-content:center;max-width:480px;min-height:100%;margin:0 auto;padding:24px 18px;display:flex}.login-screen h1{margin:0 0 4px;font-size:1.5rem}.gis-btn-host{justify-content:flex-start;display:flex}.gis-btn-host>div,.gis-btn-host iframe{max-width:100%}.demo-pill{color:var(--warn);border:1px solid var(--warn);background:#3a2e14;border-radius:999px;margin:8px 0 16px;padding:4px 10px;font-size:.75rem;display:inline-block}.qr-wrap{color:#111;background:#fff;border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:16px;display:flex}.qr-wrap .link{word-break:break-all;text-align:center;font-size:.8rem}.empty{text-align:center;color:var(--muted);padding:24px 8px}.footer-note{color:var(--muted);text-align:center;order:4;padding:8px 14px 16px;font-size:.75rem}.seg{background:var(--surface);border:1px solid var(--border);border-radius:999px;gap:4px;margin-bottom:12px;padding:4px;display:flex}.seg button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;padding:8px 10px;font-size:.85rem;font-weight:600}.seg button.active{background:var(--accent-dim);color:#fff}.btn.class-pick{text-align:left;background:var(--surface2)}.btn.class-pick.picked{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:#1a3350}.cal-card{padding-bottom:12px}.cal-weekdays{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;display:grid}.cal-wd{color:var(--muted);padding:2px 0;font-size:.7rem}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-day{aspect-ratio:1;color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;min-height:40px;padding:0;display:flex;position:relative}.cal-day.out-range{opacity:.28;cursor:not-allowed;pointer-events:none}.cal-day.in-range:hover{background:#1a5cff1f}.cal-day.is-today .cal-num{text-underline-offset:2px;font-weight:700;text-decoration:underline}.cal-day.selected{color:#fff;background:#1a5cff;border-color:#1a5cff}.cal-day.selected .cal-dot{background:#fff}.cal-num{font-size:.9rem;line-height:1}.cal-dot{background:#1a5cff;border-radius:50%;width:5px;height:5px;margin-top:3px}.cal-day.has-class:not(.selected){border-color:#1a5cff59}.book-layout,.verify-layout,.qr-layout,.admin-jobs-grid,.admin-secondary-grid{flex-direction:column;gap:0;display:flex}@media (width>=768px){body{background:#0a0e13}.app-shell{max-width:var(--content-max);min-height:100%;box-shadow:0 0 0 1px var(--border);border:none}.shell-admin.app-shell{max-width:var(--admin-max)}.topbar{gap:10px;padding:12px 20px}.topbar h1{flex:none;margin-right:8px;font-size:1.15rem}.topbar-desktop-only,.shell-member .nav-member-mobile{display:none}.shell-member .menu-toggle{display:inline-flex}.shell-admin .nav-admin{display:none}.shell-body{flex-direction:row;align-items:stretch}.sidebar{width:var(--sidebar-w);flex-direction:column;flex:0 0 var(--sidebar-w);border-right:1px solid var(--border);background:var(--surface);align-self:flex-start;gap:2px;height:calc(100vh - 53px);padding:14px 10px;display:flex;position:sticky;top:53px;overflow-y:auto}.sidebar-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px 10px 10px;font-size:.7rem}.sidebar button{color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;padding:10px 12px;font-size:.9rem;font-weight:600}.sidebar button:hover{color:var(--text);background:var(--surface2)}.sidebar button.active{background:var(--accent-dim);color:#fff;border-color:var(--accent)}.main{flex:1;max-width:100%;padding:22px 28px 36px}.main-narrow{justify-content:center;display:flex}.main-narrow>*{width:100%;max-width:480px}.footer-note{padding:10px 20px 18px}.book-layout{grid-template-columns:minmax(280px,1fr) minmax(300px,1.1fr);align-items:start;gap:16px;display:grid}.book-layout .cal-card,.book-layout .book-day-panel{margin-bottom:0}.cal-day{min-height:48px}.cal-num{font-size:1rem}.verify-layout{grid-template-columns:minmax(260px,.9fr) minmax(320px,1.2fr);align-items:start;gap:16px;display:grid}.verify-layout>.card{margin-bottom:0}.qr-layout{grid-template-columns:auto 1fr;align-items:start;gap:20px;display:grid}.qr-layout .qr-wrap{padding:28px}.qr-layout .qr-side{flex-direction:column;gap:12px;display:flex}.qr-layout .qr-side .card{margin-bottom:0}.admin-jobs-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;display:grid}.admin-secondary-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.card{padding:16px 18px}}.ops-tiles{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;display:grid}.ops-tile{appearance:none;border:1px solid var(--border);background:var(--surface);color:inherit;border-radius:var(--radius);text-align:left;cursor:pointer;padding:12px}.ops-tile:hover{border-color:var(--accent)}.ops-tile-value{margin-top:2px;font-size:1.5rem;font-weight:700}.ops-class-grid{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.ops-class-card{appearance:none;border:1px solid var(--border);background:var(--surface);color:inherit;border-radius:var(--radius);cursor:pointer;text-align:left;padding:12px 14px}.ops-class-card.status-live{border-color:var(--ok)}.ops-class-card.status-done{opacity:.85}.ops-class-card:hover{border-color:var(--accent)}.tag.status-live{color:var(--ok)}.tag.status-upcoming{color:var(--accent)}.tag.status-done{color:var(--muted)}.ops-shortcuts{gap:8px;margin-bottom:16px}.ops-watch-row{padding:10px 0}.cal-dot.att{background:var(--ok);margin-top:2px}.cal-day:disabled,.cal-day.out-range{opacity:.28;cursor:not-allowed}.proxy-layout{flex-direction:column;gap:0;display:flex}.sidebar-front{color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;margin-top:auto;padding:10px 12px;font-size:.85rem}.sidebar-front:hover{color:var(--text);background:var(--surface2)}@media (width>=768px){.ops-tiles{grid-template-columns:repeat(4,1fr);gap:10px}.ops-class-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.proxy-layout{grid-template-columns:minmax(280px,1fr) minmax(300px,1.15fr);align-items:start;gap:16px;display:grid}.proxy-layout>.card{margin-bottom:0}}.book-filters{grid-template-columns:1fr 1fr;gap:8px 12px;margin-bottom:8px;display:grid}.book-filters .field{margin:0}.book-section-title{color:var(--text);border-bottom:1px solid var(--border);margin:0 0 8px;padding-bottom:6px;font-size:.95rem}.book-sections{flex-direction:column;gap:16px;display:flex}.book-section{min-width:0}@media (width>=768px){.book-sections{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}}
