:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#142321;background:#eef4f1}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 15% 10%,#d9efe8,transparent 32%),#eef4f1}.portal-bar{position:fixed;z-index:20;top:0;left:0;right:0;height:38px;display:flex;align-items:center;justify-content:center;padding:0 16px;background:#043f39}.portal-bar a{color:#fff;font-size:13px;font-weight:750;text-align:center;text-decoration:none}.portal-bar a:hover{text-decoration:underline}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}.center-page{min-height:100vh;display:grid;place-items:center;padding:62px 24px 24px}.card{width:min(100%,470px);background:hsla(0,0%,100%,.96);border:1px solid #dce8e3;border-radius:24px;padding:36px;box-shadow:0 22px 60px rgba(22,67,57,.13)}.login-card h1,.qr-card h1{margin:8px 0;font-size:clamp(28px,5vw,38px);letter-spacing:-.04em}.brand-mark{display:inline-grid;place-items:center;height:48px;padding:0 18px;border-radius:14px;color:#fff;background:#075e54;font-weight:900;letter-spacing:.12em}.eyebrow{color:#128c7e;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin:20px 0 0}.muted{color:#667b76;line-height:1.55}label{display:grid;grid-gap:7px;gap:7px;margin-top:18px;color:#304b45;font-size:13px;font-weight:700}input,textarea{width:100%;padding:13px 14px;border:1px solid #cbd9d5;border-radius:11px;background:#fbfdfc;outline:none}textarea{min-height:86px;resize:vertical}input:focus,textarea:focus{border-color:#128c7e;box-shadow:0 0 0 3px rgba(18,140,126,.12)}button{border:0;border-radius:11px;padding:12px 18px;font-weight:750}.primary{color:#fff;background:#08796c;box-shadow:0 8px 20px rgba(8,121,108,.2)}.primary:hover{background:#06675c}.wide{width:100%;margin-top:24px}.ghost{color:#31514a;background:#edf4f1}.danger{color:#a92f2f;background:#fff0f0}.notice{margin:16px 0 0;padding:11px 13px;border-radius:10px;background:#fff8dc;color:#775e00;font-size:13px}.notice.error{background:#fff0f0;color:#a12e2e}.qr-card{text-align:center}.connections-card{width:min(100%,560px)}.connections-card h1{margin:6px 0}.connection-list{display:grid;grid-gap:10px;gap:10px;margin-top:24px}.connection-item{display:flex;align-items:center;justify-content:space-between;grid-gap:16px;gap:16px;padding:15px;text-align:left;color:#23443d;background:#f3f8f6;border:1px solid #d7e5e0}.connection-item span{display:grid;grid-gap:4px;gap:4px}.connection-item small{color:#738680;font-weight:500}.connection-item b{color:#08796c;white-space:nowrap}.secondary-action{margin-top:10px}.logout-link{display:block;margin:14px auto 8px;padding:7px 12px;color:#667b76;background:transparent;text-decoration:underline;box-shadow:none}.logout-link:hover{color:#a12e2e}fieldset{margin-top:18px;padding:12px 14px;border:1px solid #d5e1dd;border-radius:11px}legend{color:#526b65;font-size:12px;font-weight:800}.queue-option{display:flex;align-items:center;grid-gap:9px;gap:9px;margin:7px 0}.queue-option input{width:auto}.status-pill{display:inline-block;color:#a05d00;background:#fff2d7;border-radius:99px;padding:7px 12px;font-size:12px;font-weight:800}.qr-frame{width:312px;max-width:100%;aspect-ratio:1;display:grid;place-items:center;margin:24px auto;padding:16px;background:#fff;border:1px solid #dfe9e5;border-radius:18px}.qr-frame svg{width:100%;height:auto}.qr-wait{display:grid;justify-items:center;grid-gap:14px;gap:14px;color:#677d77}.spinner{display:inline-block;width:28px;height:28px;border:3px solid #c8d9d4;border-top-color:#08796c;border-radius:50%;animation:spin .8s linear infinite}.spinner.large{width:48px;height:48px}@keyframes spin{to{transform:rotate(1turn)}}.app-shell{min-height:100vh;padding:130px 20px 20px}.topbar{position:fixed;z-index:10;left:0;top:38px;right:0;min-height:72px;padding:12px max(20px,calc(50vw - 490px));display:flex;align-items:center;justify-content:space-between;grid-gap:18px;gap:18px;color:#fff;background:#075e54;box-shadow:0 4px 18px rgba(0,0,0,.15)}.topbar>div:first-child{display:grid;grid-gap:4px;gap:4px}.connection-dot{font-size:12px;color:#c9f4e8}.connection-dot:before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#35db90}.top-actions{display:flex;grid-gap:8px;gap:8px}.chat-card{width:min(100%,940px);height:calc(100vh - 150px);margin:auto;display:grid;grid-template-rows:auto 1fr auto auto;overflow:hidden;background:#fff;border:1px solid #d8e5e0;border-radius:20px;box-shadow:0 16px 48px rgba(24,69,59,.13)}.contact-header{display:flex;align-items:center;grid-gap:13px;gap:13px;padding:16px 20px;border-bottom:1px solid #e4ece9}.contact-header h2,.contact-header p{margin:0}.contact-header h2{font-size:17px}.contact-header p{margin-top:4px;font-size:12px;color:#72837f}.avatar{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#d9f4ec;color:#08796c;font-weight:900}.messages{overflow-y:auto;padding:24px;background-color:#f3eee8;background-image:radial-gradient(rgba(70,85,78,.06) 1px,transparent 0);background-size:18px 18px}.welcome{max-width:92%;margin:0 auto 22px;padding:10px 14px;text-align:center;color:#58716a;background:#fff9d9;border-radius:9px;font-size:12px}.bubble,.welcome{width:-moz-fit-content;width:fit-content;display:grid;grid-gap:5px;gap:5px}.bubble{max-width:min(78%,600px);margin:8px 0;padding:10px 12px 7px;border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,.08);white-space:pre-wrap;overflow-wrap:anywhere}.bubble.mine{margin-left:auto;background:#d9fdd3;border-bottom-right-radius:3px}.bubble.theirs{background:#fff;border-bottom-left-radius:3px}.bubble small{justify-self:end;color:#70817d;font-size:10px}.chat-notice{margin:0;border-radius:0;text-align:center}.composer{display:grid;grid-template-columns:auto minmax(150px,300px);justify-content:center;grid-gap:12px;gap:12px;padding:16px;background:#fff;border-top:1px solid #e1eae7}.location-button{color:#08796c;background:#e8f5f1}.send-choice{color:#fff;background:#128c7e;min-width:190px}.modal-backdrop{position:fixed;z-index:30;inset:0;display:grid;place-items:center;padding:18px;background:rgba(10,27,23,.64)}.modal-card{width:min(100%,680px);max-height:calc(100vh - 36px);overflow-y:auto;padding:24px;background:#fff;border-radius:20px;box-shadow:0 28px 80px rgba(0,0,0,.3)}.modal-title{display:flex;justify-content:space-between;align-items:flex-start}.modal-title h2{margin:3px 0 16px}.modal-title .eyebrow{margin:0}.close{padding:4px 11px;color:#61736f;background:transparent;font-size:28px}.coordinates,.current-location{margin-bottom:16px}.coordinates{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.coordinates label{margin:0}.map{position:relative;height:280px;overflow:hidden;border:1px solid #cfdcd8;border-radius:13px;background:#dce5e2;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.map>img{position:absolute;width:256px;height:256px;pointer-events:none}.map-pin{position:absolute;z-index:3;width:25px;height:25px;border:3px solid #fff;border-radius:50% 50% 50% 0;background:#e23838;box-shadow:0 3px 10px rgba(0,0,0,.35);transform:translate(-50%,-100%) rotate(-45deg);cursor:grab}.map-controls{position:absolute;z-index:4;top:8px;left:8px;display:grid;grid-gap:4px;gap:4px}.map-controls button{width:34px;height:34px;padding:0;border:1px solid #bfcac7;background:#fff;border-radius:7px;font-size:20px}.map-credit{position:absolute;z-index:3;right:5px;bottom:4px;padding:2px 4px;background:hsla(0,0%,100%,.85)}.map-help{margin:7px 0 0;color:#6e817c;font-size:12px}.modal-actions{display:flex;justify-content:flex-end;grid-gap:10px;gap:10px;margin-top:20px}@media (max-width:600px){.card{padding:26px 20px;border-radius:18px}.topbar{align-items:flex-start}.top-actions{flex-direction:column}.top-actions button{padding:8px 10px;font-size:11px}.app-shell{padding:120px 0 0}.chat-card{height:calc(100vh - 120px);border:0;border-radius:0}.messages{padding:16px 10px}.bubble{max-width:88%}.composer{grid-template-columns:1fr 2fr;padding:11px}.location-button span{display:none}.send-choice{min-width:0}.coordinates{grid-template-columns:1fr}.modal-card{padding:18px}.map{height:240px}}