/* Colors and type follow carnesymariscoshawaii.com */
:root{
  --page:#ffffff;--header:#eef2f6;--sky:#48c9f4;--sky2:#aee8fb;--ocean:#20a5c9;--deep:#075b72;--teal:#0c94a8;
  --coral:#ef5d45;--coral-dark:#d94c35;--yellow:#ffd44d;--cream:#fff9e8;--sand:#f2dfbd;--ink:#15373e;
  --line:rgba(7,91,114,.13);--serif:"Playfair Display",Georgia,serif;--sans:"Lato",-apple-system,system-ui,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;background:var(--page);color:var(--ink);font:17px/1.45 var(--sans);-webkit-text-size-adjust:100%}
body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);min-height:100vh;display:flex;flex-direction:column}
main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:24px 20px 40px}
h1,h2,h3{font-family:var(--serif)}

/* Header */
.hero{background:var(--header);border-bottom:1px solid #dde4ec;padding:10px 20px}
.topbar{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.logo{height:84px;width:auto;filter:drop-shadow(0 4px 8px rgba(7,91,114,.2))}
#clock{display:flex;flex-direction:column;align-items:center;flex:1;min-width:200px}
#time{font-family:var(--serif);font-weight:800;font-size:46px;line-height:1;color:var(--deep);font-variant-numeric:tabular-nums}
#date{color:var(--ink);opacity:.75;font-weight:700;margin-top:4px}
#date::first-letter{text-transform:uppercase}
nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
nav button{font:inherit;font-weight:700;border:0;background:transparent;color:var(--deep);padding:11px 18px;border-radius:999px;transition:background .2s}
nav button:hover{background:rgba(7,91,114,.09)}
nav button.active{background:var(--coral);color:#fff;box-shadow:0 6px 14px rgba(239,93,69,.3)}
nav .ghost{margin-left:6px;border:1px solid rgba(7,91,114,.25)}
.net{max-width:1100px;margin:6px auto 0;color:var(--coral-dark);font-weight:700;font-size:14px;text-align:center}

/* Check-in */
.intro{text-align:center;margin-bottom:18px}
.eyebrow{display:inline-block;background:var(--cream);border:2px solid var(--yellow);color:var(--coral);font-weight:900;text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;padding:6px 14px;border-radius:999px}
.intro h1{margin:12px 0 4px;font-size:clamp(1.9rem,4.5vw,2.8rem);line-height:1.05;color:#8e4f1c}
.intro p{margin:0;color:var(--ink);opacity:.8;font-weight:700}
#scanner{position:relative;max-width:560px;margin:0 auto 8px;border-radius:28px;overflow:hidden;background:#000;aspect-ratio:4/3;
  border:6px solid var(--yellow);outline:4px solid var(--teal);box-shadow:0 16px 35px rgba(7,91,114,.2)}
#cam,#reg-cam{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block}
#scan-status{position:absolute;left:0;right:0;bottom:0;padding:14px;text-align:center;font-weight:900;font-size:20px;color:#fff;background:rgba(7,91,114,.82)}
#scan-status.ok{background:rgba(12,148,168,.95)}
.sub{margin:28px 0 12px;color:var(--deep);font-size:1.1rem;text-align:center}
#grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.emp{background:#fff;border:2px solid var(--line);border-radius:22px;padding:20px 14px;font:inherit;color:var(--ink);text-align:center;min-height:118px;
  display:flex;flex-direction:column;justify-content:center;gap:6px;box-shadow:0 6px 16px rgba(7,91,114,.07)}
.emp:active{transform:scale(.97)}
.emp .name{font-family:var(--serif);font-size:21px;font-weight:700;color:var(--deep)}
.emp .status{color:#5d777d;font-size:15px;font-weight:700}
.emp.in{background:var(--cream);border-color:var(--teal)}
.emp.in .status{color:var(--teal)}
.emp.in .status::before{content:"✓ "}

/* Sections */
.section-title{margin-bottom:14px}
.section-title span{color:var(--coral);font-weight:900;text-transform:uppercase;letter-spacing:.1em;font-size:.8rem}
.section-title h2{margin:2px 0 0;font-size:1.9rem;color:var(--deep)}
.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:16px}
.toolbar label{display:flex;flex-direction:column;font-size:14px;font-weight:700;color:var(--deep);gap:4px}
input{font:inherit;padding:12px;border:2px solid var(--line);border-radius:14px;background:#fff;color:var(--ink)}
input:focus{outline:none;border-color:var(--teal)}
#new-name{flex:1;min-width:200px}
button.primary{font:inherit;font-weight:900;border:3px solid #fff;background:var(--coral);color:#fff;padding:11px 22px;border-radius:999px;box-shadow:0 8px 18px rgba(239,93,69,.3)}
button.primary:active{background:var(--coral-dark)}
button.primary:disabled{opacity:.55}
button.secondary{font:inherit;font-weight:900;border:0;background:var(--yellow);color:#583512;padding:12px 20px;border-radius:999px;box-shadow:0 6px 14px rgba(0,0,0,.1)}
button.danger{font:inherit;font-weight:700;border:0;background:transparent;color:var(--coral-dark);padding:8px 12px}
button.link{font:inherit;font-weight:900;border:0;background:transparent;color:var(--teal);padding:8px 12px}
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}
th{background:var(--cream);color:var(--deep);font-size:14px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}
tr:last-child td{border-bottom:0}
ul{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden}
li{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--line)}
li:last-child{border-bottom:0}
li b{font-family:var(--serif);color:var(--deep)}
li .meta{color:#5d777d;font-size:14px;font-style:normal;margin-left:10px}
li .actions{display:flex;gap:2px;flex-wrap:wrap}
.hint{color:#5d777d;text-align:center;margin-top:30px;font-weight:700}
.hint.small{font-size:14px;margin-top:8px}
#backup{margin-top:24px}
#backup .toolbar{margin-bottom:4px}

/* Footer */
.tropical{background:linear-gradient(135deg,var(--teal),var(--deep));color:#fff;text-align:center;padding:22px 20px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:2px}
.tropical strong{font-family:var(--serif);font-size:1.25rem}
.tropical span{opacity:.85;font-size:.9rem}

/* Toast */
#toast{position:fixed;left:50%;bottom:calc(36px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--deep);color:#fff;border:3px solid var(--yellow);
  padding:16px 28px;border-radius:999px;font-size:20px;font-weight:900;opacity:0;pointer-events:none;transition:.25s;max-width:92vw;text-align:center;z-index:30}
#toast.show{opacity:1;transform:translate(-50%,0)}

/* Login and registration dialogs */
#login{position:fixed;inset:0;background:linear-gradient(180deg,var(--sky2),#fff 55%);display:flex;align-items:center;justify-content:center;z-index:20;padding:16px;overflow:auto}
#modal{position:fixed;inset:0;background:rgba(7,91,114,.65);display:flex;align-items:center;justify-content:center;z-index:10;padding:16px;overflow:auto}
.sheet{background:var(--cream);border:6px solid var(--yellow);outline:4px solid var(--teal);border-radius:28px;padding:24px;width:min(560px,100%);box-shadow:0 16px 35px rgba(0,0,0,.18)}
.sheet h2{margin:0 0 12px;color:var(--deep);text-align:center}
#login form{display:flex;flex-direction:column;gap:14px;max-width:420px}
#login label{display:flex;flex-direction:column;gap:4px;color:var(--deep);font-weight:700;font-size:14px}
.login-logo{width:140px;height:auto;align-self:center}
.err{color:var(--coral-dark);font-weight:700;min-height:1.4em;margin:0}
#reg-view{border-radius:18px;overflow:hidden;background:#000;aspect-ratio:4/3}
.sheet .hint{margin:12px 0 4px}
.sheet .toolbar{margin:8px 0 0;justify-content:center}
body.signed-out main,body.signed-out header,body.signed-out footer{visibility:hidden}

@media (max-width:700px){
  .logo{height:64px}
  #time{font-size:36px}
  nav button{padding:9px 13px}
}
