@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";*,*:before,*:after{box-sizing:border-box}:root{--bg: #f8f9fc;--surface: #ffffff;--border: #e8eaef;--border-hover: #c5cbdc;--accent: #1f7fe8;--text-primary: #0f1623;--text-secondary: #5a6482;--text-muted: #9aa0b5;--card-bg: #ffffff;--card-hover: #f4f6fb;--customer-bg: #eff6ff;--customer-icon: #2563eb;--staff-bg: #f5f3ff;--staff-icon: #7c3aed;--franchise-bg: #fff7ed;--franchise-icon: #ea7d0e;--command-bg: #f0fdf4;--command-icon: #16a34a}.loader{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;z-index:9999}.loader-logo{margin-bottom:28px}.loader-logo img{height:44px;object-fit:contain;opacity:0;animation:logoReveal .75s cubic-bezier(.22,1,.36,1) .15s forwards}.loader-bar-track{width:160px;height:2px;background:#e8eaef;border-radius:2px;overflow:hidden}.loader-bar-fill{height:100%;background:var(--accent);border-radius:2px;animation:barFill 1.1s cubic-bezier(.4,0,.2,1) .25s both}@keyframes logoReveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes barFill{0%{width:0}to{width:100%}}.portal-chooser{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 20px;background:var(--bg);font-family:Inter,system-ui,sans-serif;opacity:0;transform:translateY(10px);transition:opacity .55s ease,transform .55s ease}.portal-chooser.visible{opacity:1;transform:translateY(0)}.chooser-card{width:min(940px,100%);background:var(--surface);border:1px solid var(--border);border-radius:24px;padding:48px 44px;box-shadow:0 1px 3px #0000000a,0 8px 32px #0000000f,0 32px 80px #0000000d}.chooser-brand{display:flex;align-items:center;gap:12px;margin-bottom:36px}.brand-divider{display:inline-block;width:1px;height:22px;background:var(--border)}.brand-tag{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.chooser-headline{font-size:32px;font-weight:800;color:var(--text-primary);line-height:1.15}.chooser-headline-accent{color:var(--accent)}.chooser-sub{margin-top:8px;font-size:14px;color:var(--text-secondary);line-height:1.5}.portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:28px}.portal-card{display:flex;align-items:center;gap:18px;padding:20px;background:var(--card-bg);border:1.5px solid var(--border);border-radius:16px;cursor:pointer;text-align:left;position:relative;overflow:hidden;opacity:0;transform:translateY(8px);animation:cardIn .4s ease both;transition:background .18s,border-color .18s,box-shadow .18s,transform .2s}.portal-card:hover{background:var(--card-hover);border-color:var(--border-hover);box-shadow:0 4px 16px #00000012;transform:translateY(-2px)}.portal-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes cardIn{to{opacity:1;transform:translateY(0)}}.portal-icon{flex-shrink:0;width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;transition:transform .2s}.portal-card:hover .portal-icon{transform:scale(1.08)}.portal-icon.customer{background:var(--customer-bg);color:var(--customer-icon)}.portal-icon.staff{background:var(--staff-bg);color:var(--staff-icon)}.portal-icon.franchise{background:var(--franchise-bg);color:var(--franchise-icon)}.portal-icon.command{background:var(--command-bg);color:var(--command-icon)}.portal-info{flex:1;min-width:0}.portal-title{display:block;font-size:14px;font-weight:700;color:var(--text-primary);margin-bottom:3px}.portal-desc{display:block;font-size:12.5px;color:var(--text-secondary);line-height:1.4}.portal-arrow{flex-shrink:0;color:var(--text-muted);font-size:20px;line-height:1;transition:transform .2s,color .2s}.portal-card:hover .portal-arrow{transform:translate(3px);color:var(--accent)}.status-bar{display:flex;align-items:center;gap:8px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.status-dot{width:7px;height:7px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 2px #16a34a33;animation:statusPulse 2s ease-in-out infinite;flex-shrink:0}.status-text{font-size:12px;color:var(--text-muted)}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:680px){.chooser-card{padding:28px 20px}.portal-grid{grid-template-columns:1fr}.chooser-headline{font-size:26px}}
