:root{--brand: #ffaf3f;--brand-strong: #f38e00;--brand-soft: #ffd18f;--brand-text: #a85a00;--surface-page: #fff7e9;--surface: #ffffff;--surface-tint: rgba(255,248,226,.52);--seat-available: #ffe09d;--seat-unavailable: #f2f2f2;--seat-selected: var(--brand-strong);--ink: #4d4d4d;--ink-muted: #6b6b6b;--ink-placeholder: #939393;--line: #aeaeae;--success: #15803d;--success-bg: #dcfce7;--danger: #b91c1c;--danger-bg: #fee2e2;--warning: #b45309;--warning-bg: #fef3c7;--font-sans: "42dot Sans", "Noto Sans KR", -apple-system, system-ui, sans-serif;--fs-logo: 32px;--fs-title: 18px;--fs-seat-number: 16px;--fs-body: 14px;--fs-body-sm: 13px;--fs-label: 12px;--fs-seat-status: 11px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-gutter: 45px;--radius-input: 7px;--radius-tile: 14px;--radius-seat: 20px;--radius-card: 30px;--radius-pill: 999px;--shadow-card: 0 4px 12.7px rgba(255,175,63,.5);--shadow-pill: 0 4px 12.7px -2px rgba(255,149,0,.5);--seat-width: 95px;--seat-height: 66px;--control-height: 44px}:root{--camera-bg: #111111;--camera-ink: #ffffff;--camera-ink-muted: rgba(255,255,255,.82);--camera-ink-faint: rgba(255,255,255,.58);--camera-guide: rgba(255,255,255,.9);--camera-scrim: rgba(0,0,0,.28);--camera-hit: rgba(21,128,61,.35);--scrim: rgba(0,0,0,.5)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-height);padding:0 18px;border-radius:var(--radius-input);border:1px solid transparent;font-family:var(--font-sans);font-size:var(--fs-body);font-weight:700;line-height:1.2;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.ui-btn:disabled{opacity:.5;cursor:not-allowed}.ui-btn:focus-visible{outline:2px solid var(--brand-strong);outline-offset:2px}.ui-btn--primary{background:var(--brand-soft);color:var(--ink)}.ui-btn--primary:hover:not(:disabled){background:var(--brand)}.ui-btn--secondary{background:var(--surface);color:var(--ink);border-color:var(--line)}.ui-btn--secondary:hover:not(:disabled){background:var(--surface-page)}.ui-btn--ghost{background:none;color:var(--brand-text)}.ui-btn--ghost:hover:not(:disabled){background:var(--surface-tint)}.ui-btn--danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.ui-btn--danger:hover:not(:disabled){background:var(--danger-bg)}.ui-btn--sm{min-height:36px;padding:0 12px;font-size:var(--fs-body-sm)}.ui-btn--block{width:100%}.ui-btn--align-start{justify-content:flex-start;text-align:left}.ui-spinner{display:inline-block;width:18px;height:18px;flex-shrink:0;border:2px solid var(--line);border-top-color:var(--brand-strong);border-radius:50%;animation:ui-spin .7s linear infinite}.ui-spinner--sm{width:14px;height:14px}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-loading{display:flex;justify-content:center;align-items:center;gap:var(--space-2);padding:40px var(--space-4);color:var(--ink-muted);font-size:var(--fs-body-sm)}.ui-field{margin-bottom:var(--space-3)}.ui-field--inline{margin-bottom:0}.ui-field-label{display:block;font-size:var(--fs-label);font-weight:700;color:var(--ink);margin-bottom:var(--space-1)}.ui-field-optional{font-weight:500;color:var(--ink-muted)}.ui-input{width:100%;min-height:var(--control-height);padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-input);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:500;color:var(--ink);background:var(--surface);transition:border-color .15s}.ui-input::placeholder{color:var(--ink-placeholder);opacity:1}.ui-input:focus{outline:none;border:2px solid var(--brand-strong);padding:9px 11px}.ui-input.is-error{border-color:var(--danger)}textarea.ui-input{min-height:0;resize:vertical;line-height:1.5}.ui-field-error{margin-top:var(--space-1);font-size:var(--fs-body-sm);color:var(--danger)}.ui-field-hint{margin-top:var(--space-1);font-size:var(--fs-body-sm);color:var(--ink-muted)}.ui-password{position:relative}.ui-password .ui-input{padding-right:48px}.ui-password .ui-input:focus{padding-right:47px}.ui-password-toggle{position:absolute;right:0;top:calc(var(--fs-label) * 1.3 + var(--space-1));display:flex;align-items:center;justify-content:center;width:var(--control-height);height:var(--control-height);border:none;background:none;color:var(--ink-muted);cursor:pointer;-webkit-tap-highlight-color:transparent}.ui-password-toggle:hover{color:var(--ink)}.ui-password-toggle:focus-visible{outline:2px solid var(--brand-strong);outline-offset:-2px;border-radius:var(--radius-input)}.ui-password--bare .ui-password-toggle{top:0}.ui-checklist{list-style:none;margin:calc(var(--space-2) * -1) 0 var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.ui-checklist-item{display:flex;align-items:center;gap:6px;font-size:var(--fs-body-sm);color:var(--ink-muted)}.ui-checklist-item.is-met{color:var(--success)}.ui-card{background:var(--surface);border-radius:var(--radius-card);padding:var(--space-5);margin-bottom:var(--space-4)}.ui-card--elevated{box-shadow:var(--shadow-card)}.ui-card--flat{border:1px solid var(--line)}.ui-card-title{font-size:var(--fs-title);font-weight:700;color:var(--ink);margin-bottom:var(--space-3)}.ui-page-title{font-size:var(--fs-title);font-weight:700;color:var(--ink);margin-bottom:var(--space-4)}.ui-page-title--brand{color:var(--brand-text)}.ui-page-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.ui-page-head .ui-page-title{margin-bottom:0}.ui-notice{border-radius:var(--radius-input);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);border:1px solid transparent;font-size:var(--fs-body);line-height:1.5}.ui-notice-title{display:block;font-size:var(--fs-body);font-weight:700;line-height:1.45}.ui-notice-title+.ui-notice-body{margin-top:var(--space-1)}.ui-notice-body{font-size:var(--fs-body-sm);word-break:break-word}.ui-notice-action{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.ui-notice--info{background:var(--surface-page);border-color:var(--brand-soft);color:var(--brand-text)}.ui-notice--brand{background:var(--brand-soft);border-color:var(--brand-strong);color:var(--ink)}.ui-notice--neutral{background:var(--seat-unavailable);border-color:var(--line);color:var(--ink)}.ui-notice--success{background:var(--success-bg);border-color:var(--success);color:var(--success)}.ui-notice--warning{background:var(--warning-bg);border-color:var(--warning);color:var(--warning)}.ui-notice--danger{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.ui-notice--lg{padding:var(--space-4)}.ui-notice--lg .ui-notice-title{font-size:var(--fs-title)}.ui-notice--center{text-align:center}.ui-badge{display:inline-block;padding:3px 9px;border-radius:var(--radius-pill);font-size:var(--fs-label);font-weight:700;letter-spacing:.02em;white-space:nowrap}.ui-badge--ok{background:var(--success-bg);color:var(--success)}.ui-badge--wait{background:var(--warning-bg);color:var(--warning)}.ui-badge--bad{background:var(--danger-bg);color:var(--danger)}.ui-badge--neutral{background:var(--surface-page);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}.ui-badge--brand{background:var(--brand-soft);color:var(--ink)}.ui-badge--wait-hatch{background:repeating-linear-gradient(45deg,var(--warning-bg),var(--warning-bg) 3px,var(--surface) 3px,var(--surface) 6px);color:var(--warning)}.ui-badge--bad-hatch{background:repeating-linear-gradient(-45deg,var(--danger-bg),var(--danger-bg) 3px,var(--surface) 3px,var(--surface) 6px);color:var(--danger)}.ui-badge-count{display:inline-block;margin-left:5px;min-width:18px;padding:0 5px;background:var(--danger);color:var(--surface);border-radius:var(--radius-pill);font-size:var(--fs-seat-status);font-weight:700;line-height:18px;text-align:center}.ui-tabs{display:flex;gap:0;margin-bottom:var(--space-4);box-shadow:inset 0 -1px 0 var(--line);overflow-x:auto;overflow-y:hidden;touch-action:pan-x;-webkit-overflow-scrolling:touch;scrollbar-width:none}.ui-tabs::-webkit-scrollbar{display:none}.ui-tab{display:inline-flex;align-items:center;gap:var(--space-1);flex-shrink:0;padding:10px 14px;background:none;border:none;border-bottom:2px solid transparent;font-family:var(--font-sans);font-size:var(--fs-body);font-weight:500;color:var(--ink-muted);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}.ui-tab:hover{color:var(--brand-text)}.ui-tab.is-active{color:var(--brand-text);font-weight:700;border-bottom-color:var(--brand-strong)}.ui-tab:focus-visible{outline:2px solid var(--brand-strong);outline-offset:-2px}.ui-tab-count{font-weight:500;font-size:var(--fs-label)}.ui-tabs--fill .ui-tab{flex:1;justify-content:center}.ui-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);height:52px;padding:0 var(--space-4);background:var(--surface);border-bottom:1px solid var(--line)}.ui-header-logo{flex-shrink:0}.ui-header-logo span{font-size:var(--fs-title)}a.ui-header-logo:hover{text-decoration:none}.ui-header-right{display:flex;align-items:center;gap:var(--space-2);min-width:0}.ui-header-name{font-size:var(--fs-label);color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:100;display:flex;height:var(--bottom-nav-height);background:var(--surface);border-top:1px solid var(--line)}.ui-bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 0;border:none;background:none;cursor:pointer;color:var(--ink-muted);font-size:var(--fs-label);font-weight:500;text-decoration:none;transition:color .15s;-webkit-tap-highlight-color:transparent}.ui-bottom-nav-item:hover{color:var(--brand-text);text-decoration:none}.ui-bottom-nav-item.is-active{color:var(--brand-text);font-weight:700}.ui-menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;margin-bottom:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-tint);border:none;border-radius:var(--radius-pill);box-shadow:var(--shadow-pill);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:500;color:var(--ink);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.ui-menu-item:hover{background:var(--surface-page);text-decoration:none;color:var(--ink)}.ui-menu-item-icon{display:inline-flex;flex-shrink:0;color:var(--brand-strong)}.ui-menu-item-label{flex:1;min-width:0}.ui-menu-item-chevron{display:inline-flex;flex-shrink:0;color:var(--ink-muted)}.ui-home-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);width:100%;min-height:132px;padding:var(--space-3) var(--space-2);border:none;border-radius:var(--radius-tile);background:var(--seat-available);color:var(--ink);box-shadow:var(--shadow-pill);font-family:var(--font-sans);text-align:center;cursor:pointer;word-break:keep-all;transition:transform .1s,background .15s;-webkit-tap-highlight-color:transparent}.ui-home-tile:hover{background:var(--brand-soft)}.ui-home-tile:active{transform:scale(.98)}.ui-home-tile:focus-visible{outline:2px solid var(--brand-strong);outline-offset:2px}.ui-home-tile-label{font-size:var(--fs-body);font-weight:700;line-height:1.3}.ui-home-tile-note{font-size:var(--fs-label);line-height:1.3;color:var(--ink)}.ui-home-tile.is-off{background:var(--surface-page);color:var(--ink-muted);box-shadow:none;cursor:not-allowed}.ui-home-tile.is-off:hover{background:var(--surface-page)}.ui-home-tile.is-off:active{transform:none}.ui-home-tile.is-off .ui-home-tile-note{color:var(--ink-muted)}.ui-seat{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--seat-width);height:var(--seat-height);padding:0;border:1px solid var(--line);border-radius:var(--radius-seat);background:var(--seat-unavailable);font-family:var(--font-sans);color:var(--ink);line-height:1.2;cursor:pointer;transition:box-shadow .15s;-webkit-tap-highlight-color:transparent}.ui-seat--available{background:var(--seat-available)}.ui-seat--available:hover{box-shadow:var(--shadow-card)}.ui-seat--unavailable{background:repeating-linear-gradient(135deg,var(--line) 0 1px,var(--seat-unavailable) 1px 6px);cursor:not-allowed}.ui-seat--free{width:auto;height:auto}.ui-seat--selected{border:3px solid var(--seat-selected)}.ui-seat--mine{border:3px solid var(--brand-strong);background:var(--brand-soft)}.ui-seat--readonly{cursor:default}.ui-seat--readonly:hover{box-shadow:none}.ui-seat:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.ui-seat-number{font-size:var(--fs-seat-number);font-weight:700}.ui-seat-status{display:inline-flex;align-items:center;gap:2px;font-size:var(--fs-seat-status)}.ui-seat-accessible{display:inline-flex;color:var(--brand-strong)}.ui-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:var(--space-3);background:var(--scrim)}.ui-modal{display:flex;flex-direction:column;width:100%;max-width:480px;max-height:90vh;margin-bottom:0;padding:0;overflow:hidden}@supports (height: 1dvh){.ui-modal{max-height:90dvh}}.ui-modal-head{position:sticky;top:0;z-index:1;flex-shrink:0;display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-5) var(--space-5) var(--space-2);background:var(--surface)}.ui-modal-head .ui-card-title{flex:1;min-width:0;margin-bottom:0;word-break:keep-all;overflow-wrap:anywhere}.ui-modal-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-10px -12px -10px 0;padding:0;border:0;border-radius:var(--radius-pill);background:none;color:var(--ink-muted);cursor:pointer;-webkit-tap-highlight-color:transparent}.ui-modal-close:hover{background:var(--surface-page);color:var(--ink)}.ui-modal-close:focus-visible{outline:2px solid var(--brand-strong);outline-offset:-2px}.ui-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:var(--space-1) var(--space-5)}.ui-modal-body:last-child{padding-bottom:var(--space-5)}.ui-modal-content>:last-child{margin-bottom:0}.ui-modal.is-scrollable .ui-modal-head{box-shadow:0 1px 0 var(--line)}.ui-modal.is-scrollable>.ui-modal-actions{box-shadow:0 -1px 0 var(--line),0 -6px 12px -8px #00000040}.ui-modal-desc{font-size:var(--fs-body);color:var(--ink);white-space:pre-line;line-height:1.55;word-break:keep-all;overflow-wrap:anywhere}.ui-modal-desc+.ui-field{margin-top:var(--space-4)}.ui-modal-ack{align-items:center;min-height:44px;margin-top:var(--space-3)}.ui-check-line{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--fs-body);color:var(--ink);line-height:1.4;word-break:keep-all;cursor:pointer}.ui-check-line input{flex-shrink:0;width:20px;height:20px;margin:0;accent-color:var(--brand-strong)}.ui-modal-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.ui-modal>.ui-modal-actions{position:sticky;bottom:0;z-index:1;flex-shrink:0;margin-top:0;padding:var(--space-3) var(--space-5) var(--space-5);background:var(--surface)}.ui-modal>.ui-modal-actions--tight{padding-top:var(--space-1)}.ui-modal-head+.ui-modal-actions{padding-top:var(--space-2)}@media(max-width:640px){.ui-modal-actions--grid{display:grid;grid-template-columns:1fr 1fr}.ui-modal-actions.ui-modal-actions--grid .ui-btn{min-height:var(--control-height);padding:var(--space-1) var(--space-2);white-space:normal;text-align:center;word-break:keep-all;overflow-wrap:anywhere}}.ui-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:32px var(--space-4);text-align:center;color:var(--ink-muted);font-size:var(--fs-body-sm)}.ui-empty-icon{color:var(--line)}.ui-empty--row{padding:20px var(--space-4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: var(--brand-strong);--primary-dark: var(--brand-text);--primary-light: var(--surface-page);--success-light: var(--success-bg);--warning-light: var(--warning-bg);--danger-light: var(--danger-bg);--gray-50: var(--surface-page);--gray-100: var(--surface-page);--gray-200: var(--line);--gray-400: var(--ink-muted);--gray-600: var(--ink-muted);--gray-700: var(--ink);--gray-900: var(--ink);--radius: var(--radius-input);--shadow: var(--shadow-card);--shadow-lg: var(--shadow-card);--bottom-nav-height: 60px}body{font-family:var(--font-sans);font-weight:500;background:var(--surface-page);color:var(--ink);line-height:1.6;font-size:var(--fs-body);-webkit-font-smoothing:antialiased}::placeholder{color:var(--ink-placeholder);opacity:1}a{color:var(--brand-text);text-decoration:none}a:hover{text-decoration:underline}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1;max-width:480px;width:100%;margin:0 auto;padding:20px 16px 24px}.app-main--bare{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;padding:24px var(--space-gutter) 24px}@media(max-width:360px){.app-main--bare{padding-left:var(--space-4);padding-right:var(--space-4)}}.app-main--wide{max-width:960px;padding-bottom:24px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;min-width:max-content;border-collapse:collapse;font-size:var(--fs-body-sm)}th,td{white-space:nowrap}th{text-align:left;padding:9px 10px;background:var(--surface-page);color:var(--ink-muted);font-weight:700;border-bottom:1px solid var(--line)}td{padding:10px;border-bottom:1px solid var(--line)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-tint)}.seat-choices{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:var(--space-3);margin-bottom:var(--space-4)}.seat-map{background:var(--surface);border-radius:var(--radius-card);padding:22px 14px 18px;box-shadow:var(--shadow-card);margin-bottom:14px}.seat-map-title{text-align:center;font-size:var(--fs-title);font-weight:700;color:var(--brand-text);margin-bottom:12px}.bunk-pair{--bunk-gap: 12px;position:relative;width:var(--seat-width);height:calc(var(--seat-height) * 2 + var(--bunk-gap))}.bunk-pair .ui-seat{position:absolute}.bunk-pair-upper{left:0;top:0}.bunk-pair-lower{left:0;top:calc(var(--seat-height) + var(--bunk-gap))}.bunk-pair-ladder{position:absolute;left:18px;top:calc(var(--seat-height) - (27px - var(--bunk-gap)) / 2);width:17px;height:27px;stroke:var(--ink);z-index:2;pointer-events:none}.grid-room-row{display:grid;grid-template-columns:1fr 1fr 20px;justify-items:center;margin-top:8px}.grid-room-row+.grid-room-row{margin-top:30px}.grid-room-cell{min-height:calc(var(--seat-height) * 2 + 12px)}.grid-room-floors{position:relative;width:20px;font-size:var(--fs-seat-status);color:var(--ink-muted)}.grid-room-floors .floor-2f{position:absolute;left:0;top:45px}.grid-room-floors .floor-1f{position:absolute;left:0;top:125px}.room-entrance{display:flex;align-items:center;font-size:var(--fs-seat-status);color:var(--ink-muted)}.room-entrance-bar{display:block;background:var(--brand);border-radius:2px}.room-entrance--horizontal{flex-direction:column;gap:6px;margin-top:22px}.room-entrance--horizontal .room-entrance-bar{width:28px;height:5px}.room-entrance--vertical{justify-content:flex-end;gap:8px;margin:4px -6px 4px 0}.room-entrance--vertical .room-entrance-bar{width:5px;height:26px}.plan-room{position:relative;width:100%;container-type:inline-size;color:var(--ink)}.plan-room-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.plan-room-ladder{fill:var(--ink)}.plan-room-floor{font-size:22px;fill:var(--ink-muted)}.plan-room-entrance{font-size:38px;fill:var(--ink-muted)}.plan-room-entrance-bar{fill:var(--brand)}.plan-room .plan-seat{position:absolute;padding:2px;border-color:transparent;border-radius:4px}.plan-room .plan-seat.ui-seat--unavailable{border-color:var(--line)}.plan-room .plan-seat.ui-seat--selected{border-color:var(--seat-selected)}.plan-room .plan-seat.ui-seat--mine{border-color:var(--brand-strong)}.seat-action-bar{position:sticky;bottom:10px;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface);border:2px solid var(--brand-strong);border-radius:var(--radius-card);padding:10px 14px;margin-bottom:14px;box-shadow:var(--shadow-pill)}.seat-action-info{display:flex;flex-direction:column;min-width:0;font-size:var(--fs-body);font-weight:700}.seat-action-bar .ui-btn{flex-shrink:0}.seat-action-info span{font-size:var(--fs-label);font-weight:500;color:var(--ink-muted)}.section-title{font-size:var(--fs-title);font-weight:700;color:var(--ink);margin-bottom:10px}.text-muted{color:var(--ink-muted);font-size:var(--fs-body-sm)}.text-emph{color:var(--danger);font-weight:800;font-size:1.25em}.text-center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.flex{display:flex}.gap-2{gap:8px}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--surface-page);padding:var(--space-4)}.auth-box{background:var(--surface);padding:var(--space-5) var(--space-gutter);border-radius:var(--radius-card);box-shadow:var(--shadow-card);width:100%;max-width:400px}.auth-logo{display:flex;justify-content:center;margin-bottom:var(--space-2)}.auth-logo span{font-size:var(--fs-logo)}.auth-sub{text-align:center;color:var(--ink-muted);font-size:var(--fs-body-sm);margin-bottom:var(--space-5)}.auth-wrap--login{flex-direction:column;align-items:stretch;justify-content:flex-start}.auth-wrap--login .auth-box{margin:auto}.auth-wrap--login .home-footer{flex-shrink:0}@media(max-width:400px){.auth-box{padding-left:var(--space-4);padding-right:var(--space-4)}}.privacy-agree{margin-bottom:var(--space-4)}.privacy-agree .ui-btn{margin-top:var(--space-1);padding-left:0}.privacy-detail{margin-top:var(--space-2);padding:var(--space-3);background:var(--surface-page);border-radius:var(--radius-input);font-size:var(--fs-body-sm);color:var(--ink);line-height:1.6;word-break:keep-all}.privacy-detail dt{font-weight:700}.privacy-detail dd{margin:0 0 var(--space-2)}.privacy-detail dd:last-child{margin-bottom:0}.privacy-detail-note{color:var(--ink-muted)}.status-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:14px}.status-card{background:var(--surface);border-radius:var(--radius-input);padding:14px;box-shadow:var(--shadow-card)}.status-card .label{font-size:var(--fs-label);color:var(--ink-muted)}.status-card .value{font-size:var(--fs-title);font-weight:700;color:var(--ink);margin-top:2px}.status-card--wide{grid-column:1 / -1}.timer{font-size:28px;font-weight:700;color:var(--danger);font-variant-numeric:tabular-nums}.timer.ok{color:var(--success)}.scanner-frame{position:relative;width:100%;max-width:320px;margin:0 auto;aspect-ratio:1 / 1;border-radius:var(--radius-seat);overflow:hidden;background:var(--camera-bg);border:3px solid var(--line);transition:border-color .15s ease}.scanner-frame.hit{border-color:var(--success)}.scanner-video{width:100%;height:100%}.scanner-video video{width:100%!important;height:100%!important;object-fit:cover;display:block}.scanner-video img[alt="Info icon"],.scanner-video #qr-shaded-region{display:none!important}.scanner-guide{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:62%;aspect-ratio:1 / 1;border:3px solid var(--camera-guide);border-radius:10px;box-shadow:0 0 0 9999px var(--camera-scrim);pointer-events:none}.scanner-hit-mark{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--camera-hit);color:var(--camera-ink);pointer-events:none}.scanner-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--camera-ink);font-size:var(--fs-body-sm);background:var(--camera-bg)}.scanner-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 14px;background:var(--camera-bg);color:var(--camera-ink);text-align:center;overflow-y:auto}.scanner-error-title{font-size:var(--fs-title);font-weight:700}.scanner-error-desc{font-size:var(--fs-body-sm);line-height:1.45;color:var(--camera-ink-muted);word-break:keep-all}.scanner-error-note{font-size:var(--fs-label);line-height:1.4;color:var(--camera-ink-faint);word-break:keep-all}.seat-no{white-space:nowrap}.page-back{margin-bottom:var(--space-2)}.qr-print-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}.qr-room-group{margin-bottom:22px}.qr-room-title{font-size:var(--fs-title);font-weight:700;color:var(--ink);margin-bottom:10px}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.qr-card{border:1.5px dashed var(--line);border-radius:var(--radius-input);padding:12px 8px;text-align:center;background:var(--surface);break-inside:avoid;page-break-inside:avoid}.qr-card-img{display:flex;justify-content:center;margin-bottom:8px}.qr-card-img svg{width:100%;height:auto;max-width:132px}.qr-card-name{font-size:var(--fs-seat-number);font-weight:700;line-height:1.3;word-break:keep-all}.qr-card-actions{margin-top:8px}@media print{@page{size:A4 portrait;margin:10mm}.ui-header,.ui-bottom-nav,.no-print{display:none!important}body{background:var(--surface);font-size:12px}table{min-width:0}.app-main,.app-main--wide{max-width:none!important;padding:0!important}.ui-card{box-shadow:none!important;border:none!important;padding:0!important;margin:0!important}.qr-room-group{margin-bottom:0}.qr-room-title{break-after:avoid;page-break-after:avoid;font-size:10pt;margin:0 0 1.5mm;line-height:1.2}.qr-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:62mm;gap:2mm}.qr-card{border:1px dashed var(--line);padding:2mm;display:flex;flex-direction:column;align-items:center;justify-content:center;break-inside:avoid;page-break-inside:avoid}.qr-card-img{margin-bottom:1.5mm}.qr-card-img svg{width:42mm!important;height:42mm!important;max-width:none}.qr-card-name{font-size:10.5pt;line-height:1.25}}.mono-id{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em}.signup-info-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}.signup-info-row:last-child{border-bottom:none}.signup-info-row>span{color:var(--ink-muted);font-size:var(--fs-body-sm)}.signup-info-row>strong{font-size:var(--fs-seat-number);word-break:break-all;text-align:right}.howto-list{margin:0 0 12px;padding-left:20px;font-size:var(--fs-body)}.howto-list>li{margin-bottom:10px}.howto-list .text-muted{font-size:var(--fs-body-sm)}.howto-tag{display:inline-block;background:var(--surface-page);color:var(--brand-text);box-shadow:inset 0 0 0 1px var(--brand-soft);border-radius:var(--radius-pill);padding:1px 8px;font-size:var(--fs-label);font-weight:700;vertical-align:2px}.howto-notes{margin:0;padding-left:20px;font-size:var(--fs-body-sm);color:var(--ink-muted)}.howto-notes>li{margin-bottom:4px}.upload-preview{margin-bottom:12px;border:1px solid var(--line);border-radius:var(--radius-input);overflow:hidden;background:var(--surface-tint)}.upload-preview img{display:block;width:100%;max-height:320px;object-fit:contain}.consent-notice{margin-bottom:10px}.consent-toggle{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;color:var(--brand-text);font-size:var(--fs-body-sm);font-weight:700;text-align:left;display:inline-flex;align-items:center;gap:var(--space-1)}.consent-detail{margin-top:8px;padding:12px;background:var(--surface-tint);border:1px solid var(--line);border-radius:var(--radius-input);font-size:var(--fs-body-sm)}.consent-detail dt{font-weight:700;color:var(--ink);margin-top:8px}.consent-detail dt:first-child{margin-top:0}.consent-detail dd{margin:2px 0 0;color:var(--ink-muted)}.consent-check{display:flex;align-items:flex-start;gap:8px;margin-bottom:14px;font-size:var(--fs-body);cursor:pointer}.consent-check input{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--brand-strong)}.history-list{list-style:none}.history-item{padding:10px 0;border-bottom:1px solid var(--line)}.history-item:last-child{border-bottom:none}.history-item-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-body-sm)}.history-item-note{margin-top:4px;font-size:var(--fs-body-sm);color:var(--ink);word-break:break-word}.review-file{margin-bottom:12px;border-radius:var(--radius-input);overflow:hidden;background:var(--surface-tint)}.review-file img{display:block;width:100%;max-height:46vh;object-fit:contain}.review-identity{background:var(--surface-tint);border:1px solid var(--line);border-radius:var(--radius-input);padding:10px 12px;margin-bottom:14px}.review-identity-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0}.review-identity-row>span{color:var(--ink-muted);font-size:var(--fs-label);flex-shrink:0}.review-identity-row>strong{font-size:var(--fs-body);text-align:right;word-break:break-all}.review-identity-sid{font-size:var(--fs-logo);font-weight:700;color:var(--ink)}.reject-presets{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.reject-presets .ui-btn{font-size:var(--fs-body-sm)}.filter-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.record-list{list-style:none}.record-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-input);padding:12px;margin-bottom:10px}.record-card.is-suspended{background:var(--seat-unavailable)}.record-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap}.record-card-head strong{font-size:var(--fs-body)}.record-card-meta{margin-top:4px;font-size:var(--fs-label);color:var(--ink-muted);word-break:break-all}.record-card-note{margin-top:6px;font-size:var(--fs-body-sm);color:var(--ink);word-break:break-word}.record-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.usage-end-line{word-break:keep-all;overflow-wrap:anywhere;margin:8px 0;padding:8px 10px;border-radius:var(--radius-input);background:var(--surface-page);color:var(--brand-text);box-shadow:inset 0 0 0 1px var(--brand-soft);font-size:var(--fs-body-sm);text-align:center}.op-card-now{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.op-card-hours{font-size:var(--fs-body-sm);color:var(--ink)}.op-card-state{flex-basis:100%;font-size:var(--fs-body-sm)}.op-card-open{color:var(--success);font-weight:700}.op-card-closed{color:var(--ink-muted);font-weight:700}.report-categories{display:flex;flex-direction:column;gap:8px}.report-category{display:block;width:100%;text-align:left;cursor:pointer;padding:11px 12px;border-radius:var(--radius-input);border:1px solid var(--line);background:var(--surface-tint);font-family:inherit;-webkit-tap-highlight-color:transparent}.report-category strong{display:block;font-size:var(--fs-body);font-weight:700;color:var(--ink)}.report-category span{display:block;margin-top:2px;font-size:var(--fs-body-sm);color:var(--ink-muted)}.report-category.active{border:2px solid var(--brand-strong);padding:10px 11px;background:var(--surface-page)}.report-category.active strong{color:var(--brand-text)}.report-notice{background:var(--surface-tint);border:1px solid var(--line);border-radius:var(--radius-input);padding:11px 12px;margin-bottom:14px;font-size:var(--fs-body-sm);color:var(--ink-muted);line-height:1.55}.report-detail{background:var(--surface-tint);border:1px solid var(--line);border-radius:var(--radius-input);padding:10px 12px}.report-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0}.report-detail-row>span{color:var(--ink-muted);font-size:var(--fs-label);flex-shrink:0}.report-detail-row>strong{font-size:var(--fs-body);text-align:right;word-break:break-all}.report-detail-memo{margin-top:8px;padding:10px 12px;border-radius:var(--radius-input);background:var(--surface);border:1px solid var(--line);font-size:var(--fs-body-sm);white-space:pre-wrap;word-break:break-word}.candidate-list{list-style:none;display:flex;flex-direction:column;gap:8px}.candidate{display:block;width:100%;text-align:left;cursor:pointer;padding:10px 12px;border-radius:var(--radius-input);border:1px solid var(--line);background:var(--surface-tint);font-family:inherit;color:var(--ink);-webkit-tap-highlight-color:transparent}.candidate:disabled{opacity:.5;cursor:not-allowed}.candidate.active{border:2px solid var(--brand-strong);padding:9px 11px;background:var(--surface-page)}.candidate-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.candidate-head strong{font-size:var(--fs-body)}.candidate-meta{margin-top:3px;font-size:var(--fs-body-sm);color:var(--ink-muted)}.candidate-badges{display:flex;flex-wrap:wrap;gap:4px}.candidate-hint{color:var(--warning)}.flex.wrap{flex-wrap:wrap}.mb-0{margin-bottom:0}.section-title--spaced{margin-top:var(--space-4)}.ui-field--spaced{margin-top:var(--space-3)}.status-card-time{font-size:var(--fs-body)}.report-when{display:flex;flex-wrap:wrap;gap:var(--space-2)}.report-when-custom{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.report-summary{margin-bottom:var(--space-2);text-align:center;font-size:var(--fs-body-sm);font-weight:700;color:var(--brand-text)}.checkin-occupied-btn{margin-top:var(--space-3)}.checkin-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.checkin-countdown{text-align:center}.checkin-deadline-label,.checkin-deadline-at{font-size:var(--fs-label);color:var(--ink-muted)}.timer--over{font-size:var(--fs-title)}.checkin-guide{margin-bottom:var(--space-2);text-align:center;font-size:var(--fs-body);color:var(--ink-muted)}.checkin-submitting{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin-top:var(--space-2);font-size:var(--fs-body-sm);color:var(--ink-muted)}.checkin-result{text-align:center}.checkin-result>*+*{margin-top:var(--space-2)}.checkin-result-icon{color:var(--brand-strong)}.checkin-result-title{font-size:var(--fs-title);font-weight:700;color:var(--ink)}.checkin-result-desc{color:var(--ink-muted, inherit);font-size:var(--fs-body-sm);line-height:1.6;word-break:keep-all;overflow-wrap:anywhere}.temp-password{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-3) 0;padding:var(--space-3);background:var(--surface-page);border-radius:var(--radius-input)}.temp-password-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:22px;font-weight:700;letter-spacing:.12em;color:var(--ink);word-break:break-all}.user-search{flex:1;min-width:150px}.cell-id{font-size:var(--fs-seat-status)}.uikit-note{margin-bottom:var(--space-3);font-size:var(--fs-body-sm);color:var(--ink-muted)}.uikit-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-3)}.uikit-col{display:flex;flex-direction:column;gap:var(--space-3)}.uikit-col--wide{width:100%}.uikit-col>*{margin-bottom:0}.uikit-brand-bg{display:inline-flex;padding:var(--space-3);background:var(--brand);border-radius:var(--radius-input)}.uikit-icon{display:inline-flex;flex-direction:column;align-items:center;gap:var(--space-1);width:78px;font-size:var(--fs-seat-status);color:var(--ink-muted);text-align:center}.uikit-icon>svg{color:var(--ink)}.home-center{width:100%;max-width:400px;margin:auto}.more-page{flex:1;display:flex;flex-direction:column}.home-profile{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.home-avatar{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:var(--brand-soft);color:var(--ink-muted)}.home-profile-text{min-width:0}.home-greeting{font-size:var(--fs-title);color:var(--ink);line-height:1.35;word-break:keep-all}.home-greeting strong{color:var(--brand-text);font-weight:700}.home-student-id{margin-top:2px;font-size:var(--fs-body-sm);color:var(--ink-muted)}.home-state{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);margin-top:var(--space-1)}.home-state-line{font-size:var(--fs-label);color:var(--ink-muted);word-break:keep-all}.home-warning{font-size:var(--fs-label);font-weight:700;color:var(--warning)}.home-card-lead{font-size:var(--fs-body);color:var(--ink-muted);margin-bottom:var(--space-4)}.home-card-desc{font-size:var(--fs-body);color:var(--ink);line-height:1.55;word-break:keep-all}.home-center .ui-card-title,.home-center .ui-notice{word-break:keep-all}.home-tiles{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:var(--space-3);margin-bottom:var(--space-4)}.home-footer{width:100%;max-width:400px;margin-left:auto;margin-right:auto;padding-top:var(--space-5);font-size:var(--fs-body-sm);color:var(--brand-text);text-align:center}.more-page .home-footer{margin-top:auto}.home-footer p{word-break:keep-all}.home-footer-link{display:inline-block;min-height:44px;padding:12px var(--space-2);color:var(--brand-text);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere;max-width:100%}.more-back{align-self:flex-start}.more-brand{text-align:center;margin:var(--space-4) 0 var(--space-5)}.more-brand img{margin:0 auto}.more-brand-name{margin-top:var(--space-2);font-size:var(--fs-logo);font-weight:700;color:var(--ink);line-height:1.2}.more-note{font-size:var(--fs-label);color:var(--ink-muted);white-space:nowrap}.more-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.more-logout{margin-top:var(--space-5)}.more-withdraw .ui-menu-item-label{color:var(--danger)}.my-seat-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.my-seat-actions>*{flex:1 1 auto}.my-seat-extend-hint{margin-top:var(--space-1)}.extend-banner{word-break:keep-all;overflow-wrap:anywhere}.audit-filters{align-items:center}.audit-filters .ui-field{flex:0 1 160px;min-width:130px}.audit-filters .audit-search{flex:1 1 200px}.audit-row{cursor:pointer}.audit-row:focus-visible{outline:2px solid var(--brand-strong);outline-offset:-2px}.audit-row.is-open>td{border-bottom-color:transparent}.audit-detail>td{background:var(--surface-tint);white-space:normal}.audit-detail-body{width:0;min-width:100%}.audit-detail dl,.data-card-detail dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-1) var(--space-3)}.audit-detail dt,.data-card-detail dt{color:var(--ink-muted);font-size:var(--fs-label)}.audit-detail dd,.data-card-detail dd{font-size:var(--fs-body-sm);word-break:break-all;white-space:pre-wrap}.audit-detail-ids{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px dashed var(--line)}.audit-detail-ids-title{margin-bottom:var(--space-1);font-size:var(--fs-label);font-weight:700;color:var(--ink-muted)}.audit-detail-ids dd{font-size:var(--fs-label)}.report-detail-actions{margin-top:var(--space-2)}.audit-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3)}.audit-pager-summary{font-size:var(--fs-body-sm);color:var(--ink-muted)}.audit-pager-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.audit-pager-gap{color:var(--ink-muted);padding:0 var(--space-1)}.data-cards{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.data-card{padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-input);background:var(--surface)}.data-card--toggle{cursor:pointer;-webkit-tap-highlight-color:transparent}.data-card--toggle:focus-visible{outline:2px solid var(--brand-strong);outline-offset:2px}.data-card.is-open{border-color:var(--brand-strong)}.data-card-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.data-card-title-main{display:flex;flex-wrap:wrap;align-items:center;gap:4px var(--space-2);min-width:0;font-size:var(--fs-body);font-weight:700;color:var(--ink);word-break:keep-all}.data-card-title-end{flex-shrink:0;display:flex;align-items:center;gap:var(--space-2)}.data-card-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2) var(--space-3);margin-top:var(--space-2)}.data-card-field dt{font-size:var(--fs-label);color:var(--ink-muted)}.data-card-field dd{font-size:var(--fs-body-sm);color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}.data-card-detail{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--line);cursor:auto}@media(max-width:640px){.admin-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));box-shadow:none;overflow:hidden}.admin-tabs .ui-tab{justify-content:center;min-height:44px;padding:8px 2px;border-bottom:2px solid var(--line);font-size:var(--fs-body-sm);white-space:normal;word-break:keep-all;text-align:center}.admin-tabs .ui-tab.is-active{border-bottom-color:var(--brand-strong)}.op-card{padding:var(--space-3) var(--space-4)}.op-card .ui-card-title{font-size:var(--fs-body);margin-bottom:var(--space-2)}.op-card-now{gap:4px var(--space-2);margin-bottom:var(--space-2)}.op-card-state{flex-basis:auto;order:1}.op-card-hours{flex-basis:100%;order:2;font-size:var(--fs-label);color:var(--ink-muted)}.op-card-switch{width:100%}.audit-filters{flex-direction:column;align-items:stretch}.audit-filters .ui-field,.audit-filters .audit-search{flex:none;width:100%;min-width:0}.audit-filters .ui-btn{width:100%}.app-main--wide .ui-btn--sm{min-height:40px}.app-main--wide .record-card-actions,.app-main--wide .audit-pager-buttons,.app-main--wide .filter-row{gap:var(--space-2)}.app-main--wide .record-card-actions .ui-btn--danger{margin-left:auto}.app-main--wide .audit-pager{flex-direction:column;align-items:stretch}.app-main--wide .audit-pager-buttons{justify-content:center}}
