:root{--ink:#15323b;--muted:#64777d;--teal:#0e7490;--teal-dark:#155e75;--mint:#dff7f0;--line:#dce7e9;--paper:#fff;--bg:#f3f7f7;--danger:#b42318;--shadow:0 12px 35px rgba(20,58,68,.09)}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-height:100vh;display:flex;flex-direction:column}.topbar{height:70px;padding:0 max(20px,calc((100% - 1120px)/2));display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:800;text-decoration:none}.brand-mark{display:grid;place-items:center;width:34px;height:34px;background:var(--teal);color:#fff;border-radius:11px}.topbar nav{display:flex;align-items:center;gap:20px}.topbar nav a{color:var(--ink);text-decoration:none;font-weight:650;font-size:14px}.user-name{color:var(--muted);font-size:14px}.container{width:min(1120px,calc(100% - 36px));margin:38px auto;flex:1}footer{text-align:center;color:var(--muted);font-size:13px;padding:25px}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:12px;font-weight:800;color:var(--teal)}h1{font-size:clamp(30px,5vw,48px);line-height:1.06;margin:10px 0 12px;letter-spacing:-.035em}h2{margin:0 0 18px;font-size:21px}p{color:var(--muted);line-height:1.65}.button{appearance:none;border:0;background:var(--teal);color:#fff;border-radius:10px;padding:12px 17px;font-weight:750;font-size:14px;text-decoration:none;cursor:pointer;display:inline-flex;justify-content:center;align-items:center}.button:hover{background:var(--teal-dark)}.button-secondary{background:#e5f2f4;color:var(--teal-dark)}.button-secondary:hover{background:#d4e9ec}.button-large{font-size:17px;padding:17px;width:100%}.alert{padding:14px 18px;border-radius:10px;margin:0 0 22px;font-weight:650}.alert-success{background:var(--mint);color:#16634f}.alert-error{background:#fee4e2;color:var(--danger)}.auth-card,.scan-card,.code-card{width:min(540px,100%);margin:5vh auto;background:var(--paper);padding:clamp(25px,5vw,48px);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.form-stack{display:flex;flex-direction:column;gap:17px;margin-top:25px}.form-stack.compact{margin:0 0 24px;padding-bottom:24px;border-bottom:1px solid var(--line)}label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:14px}input,textarea,select{width:100%;border:1px solid #c9d8db;border-radius:9px;padding:12px 13px;background:#fff;color:var(--ink);font:inherit;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(14,116,144,.12)}.optional{font-weight:500;color:var(--muted)}.scan-card{text-align:center}.scan-card label{text-align:left}.scan-icon,.room-icon{display:grid;place-items:center;background:var(--mint);color:#14745b;border-radius:50%;font-weight:900}.scan-icon{width:72px;height:72px;font-size:32px;margin:0 auto 25px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:25px;box-shadow:0 5px 18px rgba(20,58,68,.04);margin-bottom:22px}.scan-card+.panel{width:min(540px,100%);margin-left:auto;margin-right:auto}.timeline>div{position:relative;padding:3px 0 20px 27px;border-left:2px solid var(--line);display:flex;flex-direction:column}.timeline>div:last-child{border-left-color:transparent}.timeline small{color:var(--muted);margin-top:4px}.dot{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--teal);left:-7px;top:6px;border:3px solid #fff}.hero{background:linear-gradient(125deg,#e2f5f2,#e6f0f7);border:1px solid #d4e7e7;border-radius:25px;padding:clamp(28px,5vw,55px);display:flex;align-items:center;justify-content:space-between;gap:30px;margin-bottom:28px}.hero p{max-width:650px;margin-bottom:0}.hero-badge{width:140px;height:140px;flex:0 0 auto;border-radius:50%;background:#fff;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center}.hero-badge strong{font-size:40px}.hero-badge span{font-size:12px;color:var(--muted)}.room-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.room-card{display:flex;align-items:center;gap:17px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;text-decoration:none;color:var(--ink);transition:.18s}.room-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#b6dadd}.room-icon{width:46px;height:46px;flex:0 0 auto}.room-card h2{margin:0 0 4px}.room-card p{margin:0;font-size:13px}.arrow{margin-left:auto;font-size:24px;color:var(--teal)}.page-heading,.report-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.page-heading h1{margin-bottom:0}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.inline-form{display:flex;gap:10px;margin-bottom:22px}.item-list{display:flex;flex-direction:column}.item{padding:14px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.item:last-child{border:0}.item div:first-child{display:flex;flex-direction:column;gap:4px}.item small,.muted,.hint{color:var(--muted)}.item-actions{display:flex;gap:12px}.item-actions a{color:var(--teal);font-weight:700;font-size:13px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.status{font-size:11px;font-weight:800;text-transform:uppercase;color:var(--muted)}.status.active{color:#14745b}.code-card{text-align:center}.qr-code{width:min(320px,100%);aspect-ratio:1;display:block;margin:25px auto;border:10px solid white;box-shadow:0 3px 16px rgba(0,0,0,.1)}.copy-row{display:flex;gap:9px}.copy-row input{font-size:12px}.hint{font-size:13px;text-align:left;background:#f3f7f7;padding:13px;border-radius:8px}.filter-form{display:grid;grid-template-columns:2fr 1fr auto;gap:14px;align-items:end}.report-head{margin-bottom:20px}.report-head h2{margin:0}.report-head p{margin:5px 0 0}.download-actions{display:flex;gap:9px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;background:#f1f6f6;color:#45636b;font-size:12px;text-transform:uppercase;letter-spacing:.06em}th,td{padding:13px 15px;border-bottom:1px solid var(--line)}.empty-cell{text-align:center;color:var(--muted);padding:35px}.empty{text-align:center;background:#fff;border:1px dashed #c4d7da;border-radius:18px;padding:45px;grid-column:1/-1}.print-sheet{background:#fff;padding:35px}.print-title{display:flex;justify-content:space-between;border-bottom:3px solid var(--teal);padding-bottom:20px;margin-bottom:25px}.print-title h1{font-size:36px}.print-title p{margin:0}.print-meta{color:var(--muted);font-size:13px}.signature{width:280px;border-top:1px solid var(--ink);margin:70px 0 30px;padding-top:8px;font-size:12px;color:var(--muted)}
@media(max-width:760px){.topbar{height:auto;min-height:64px;padding:14px 18px;align-items:flex-start}.topbar nav{gap:12px;flex-wrap:wrap;justify-content:flex-end}.user-name{display:none}.container{margin:24px auto}.hero{align-items:flex-start}.hero-badge{width:95px;height:95px}.hero-badge strong{font-size:30px}.room-grid,.admin-grid{grid-template-columns:1fr}.page-heading,.report-head{align-items:flex-start;flex-direction:column}.filter-form{grid-template-columns:1fr}.download-actions{width:100%;flex-wrap:wrap}.inline-form{flex-direction:column}.two-cols{grid-template-columns:1fr}.copy-row{flex-direction:column}.auth-card,.scan-card,.code-card{margin:0 auto}.brand span:last-child{display:none}}
@media(max-width:500px){.hero-badge{display:none}.topbar nav a{font-size:13px}.panel{padding:19px}.item{align-items:flex-start}.item-actions{flex-direction:column}.download-actions .button{flex:1}.report-panel{padding:14px}th,td{padding:11px 10px}.container{width:min(100% - 24px,1120px)}}
@media print{body{background:#fff}.topbar,footer,.print-button{display:none!important}.container{width:100%;margin:0}.code-card,.print-sheet{box-shadow:none;border:0;margin:0 auto}.print-view .container{margin:0}.print-sheet{padding:0}table{font-size:11pt}th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.qr-code{width:75mm}.hint,.copy-row{display:none}}
