:root{--navy:#1b2a4a;--navy-l:#2d4a7c;--accent:#3b82f6;--amber:#f59e0b;--red:#dc2626;--green:#15803d;--purple:#7c3aed;--gray-bg:#f1f5f9;--gray-bd:#94a3b8;--gray-bd-l:#cbd5e1;--text:#0f172a;--text-sub:#64748b}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--gray-bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.6}button{font:inherit}button:disabled{opacity:.6}.page{max-width:480px;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(1rem + env(safe-area-inset-bottom));margin:0 auto}.page h2{color:var(--navy);margin-bottom:1rem;font-size:1.25rem}.page-h{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.page-h h2{margin-bottom:0;font-size:1.1rem}.notice{color:var(--text-sub);font-size:.8125rem}.center{text-align:center;padding:2rem 0}.mt{margin-top:.5rem}.mb{margin-bottom:.75rem}.login{background:var(--navy);min-height:100dvh;padding:env(safe-area-inset-top) 1rem env(safe-area-inset-bottom);justify-content:center;align-items:center;display:flex}.login-box{background:#fff;border-radius:16px;width:100%;max-width:340px;padding:2rem;box-shadow:0 4px 24px #00000026}.login-box h1{text-align:center;color:var(--navy);margin-bottom:.5rem;font-size:1.3rem}.login-box p{text-align:center;color:var(--text-sub);margin-bottom:1.5rem;font-size:.85rem}.login-label{color:var(--navy);margin-bottom:.25rem;font-size:.8125rem;font-weight:600;display:block}.login-box input{border:1px solid var(--gray-bd-l);border-radius:8px;width:100%;margin-bottom:.75rem;padding:.875rem 1rem;font-size:1rem}.login-box button[type=submit]{background:var(--navy);color:#fff;border:none;border-radius:8px;width:100%;padding:.875rem;font-size:1rem}.login-box .err{color:var(--red);text-align:center;min-height:1.2em;margin-top:.5rem;font-size:.8rem}.grade-sel{gap:.5rem;margin-bottom:.75rem;display:flex}.grade-sel button{background:var(--gray-bg);border:1px solid var(--gray-bd-l);color:var(--text);border-radius:8px;flex:1;padding:.5rem;font-size:.8rem}.grade-sel button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.card{border:1px solid var(--gray-bd);background:#fff;border-radius:12px;margin-bottom:.75rem;overflow:hidden;box-shadow:0 1px 3px #0000000f}.card-h{color:var(--navy);border-bottom:1px solid var(--gray-bd);justify-content:space-between;align-items:center;padding:.625rem 1rem;font-size:.875rem;font-weight:600;display:flex}.card-b{padding:1rem}.d-row{border-bottom:1px solid var(--gray-bd-l);justify-content:space-between;padding:.5rem 0;font-size:.875rem;display:flex}.d-row:last-child{border:none}.d-row .l{color:var(--text-sub)}.badge{border-radius:12px;padding:.125rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.b-scheduled{color:var(--accent);background:#dbeafe}.b-in_progress{color:var(--green);background:#dcfce7}.b-completed{background:var(--gray-bg);color:var(--text-sub)}.b-crew{color:var(--navy);background:#dbeafe}.b-ops{color:#0284c7;background:#e0f2fe}.b-guide{background:var(--gray-bg);color:var(--purple)}.btn{border:none;border-radius:8px;padding:.625rem 1rem;font-size:.875rem}.btn:active{transform:scale(.97)}.btn-p{background:var(--navy);color:#fff}.btn-d{background:var(--red);color:#fff}.btn-g{background:var(--green);color:#fff}.btn-s{background:var(--gray-bg);color:var(--text);border:1px solid var(--gray-bd)}.btn-block{width:100%;margin-bottom:.5rem;padding:.875rem;font-size:1rem}.btn-sm{padding:.375rem .625rem;font-size:.75rem}.dcard{border:1px solid var(--gray-bd);background:#fff;border-radius:12px;margin-bottom:.75rem;padding:1rem;box-shadow:0 1px 3px #0000000f}.dcard.sc{border-left:4px solid var(--accent)}.dcard.ip{border-left:4px solid var(--green)}.dcard-h{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.dcard-r{font-size:1rem;font-weight:600}.dcard-m{color:var(--text-sub);flex-wrap:wrap;gap:.75rem;font-size:.8125rem;display:flex}.agg-bar{border:1px solid var(--gray-bd);background:#fff;border-radius:12px;margin-bottom:.75rem;padding:.75rem 1rem}.agg-total{color:var(--navy);margin-bottom:.5rem;font-weight:700}.agg-grid{grid-template-columns:repeat(4,1fr);gap:.375rem;display:grid}.agg-item{background:var(--gray-bg);text-align:center;border-radius:8px;padding:.25rem}.agg-num{font-size:1rem;font-weight:700}.agg-label{color:var(--text-sub);font-size:.6875rem}.snap-info{color:var(--text-sub);font-size:.8125rem;font-weight:400}.seat-ctn{padding:.25rem 0}.seat-driver{text-align:center;background:var(--navy);color:#fff;border-radius:8px;margin-bottom:.5rem;padding:.5rem;font-size:.8125rem}.seat-grid{flex-direction:column;gap:4px;display:flex}.seat-row{justify-content:center;gap:4px;display:flex}.seat-aisle{flex:0 0 16px}.seat-btn{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:8px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;max-width:76px;min-height:56px;padding:4px 2px;font-size:.6875rem;line-height:1.2;display:flex}.seat-btn:active{transform:scale(.95)}.seat-btn.pending{outline:2px solid var(--accent)}.seat-no{font-size:.875rem;font-weight:700}.seat-name{opacity:.75}.s-UNCONFIRMED{color:#374151;background:#e5e7eb;border:1px dashed #9ca3af}.s-NOTICE_SENT{color:#92400e;background:#fef3c7;border:1px solid #f59e0b}.s-PASSENGER_CONFIRMED{color:#1e40af;background:#dbeafe;border:1px solid #3b82f6}.s-DRIVER_CONFIRMED{background:var(--navy);color:#fff;border:1px solid var(--navy-l)}.s-BOARDED{background:var(--green);color:#fff;border:1px solid var(--green)}.s-NO_SHOW{color:#991b1b;background:#fee2e2;border:1px dashed #dc2626}.s-CANCELLED{color:#6b7280;background:#e5e7eb;border:1px dotted #6b7280}.s-EXCEPTION{color:#9a3412;background:#fed7aa;border:2px double #ea580c}.report-tbl{border-collapse:collapse;width:100%;font-size:.875rem}.report-tbl th,.report-tbl td{border-bottom:1px solid var(--gray-bd-l);text-align:left;padding:.375rem .5rem}.report-tbl th{color:var(--text-sub);font-weight:600}.report-tbl .sum td{font-weight:700}.toast{left:50%;bottom:calc(1.5rem + env(safe-area-inset-bottom));color:#fff;z-index:1000;background:#0f172ae6;border-radius:8px;max-width:calc(100% - 2rem);padding:.625rem 1rem;font-size:.875rem;position:fixed;transform:translate(-50%)}
