/* ===== NAKATOMI PLAZA — green-phosphor check-in kiosk ===== */
:root{
  --green:#37e0a6;
  --green-dim:#1f8f6b;
  --green-deep:#0c3b2c;
  --bg:#03150f;
  --bg2:#04231a;
  --amber:#ffcf6a;
  --red:#ff5a52;
  --line:rgba(55,224,166,.35);
  --glow:0 0 8px rgba(55,224,166,.55);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:radial-gradient(120% 90% at 50% 30%, #06271d 0%, var(--bg) 70%, #010a07 100%);
  color:var(--green);
  font-family:'Share Tech Mono',ui-monospace,monospace;
  overflow:hidden;
  text-shadow:var(--glow);
  -webkit-user-select:none;user-select:none;
  cursor:default;
  letter-spacing:.02em;
}
button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer;text-shadow:inherit}

/* CRT overlays */
.crt{position:fixed;inset:0;z-index:40;pointer-events:none;
  background:radial-gradient(120% 100% at 50% 50%, transparent 55%, rgba(0,0,0,.55) 100%);}
.scanlines{position:fixed;inset:0;z-index:41;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(to bottom, rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px, rgba(0,0,0,.28) 3px, rgba(0,0,0,0) 4px);}
.flicker{position:fixed;inset:0;z-index:42;pointer-events:none;background:rgba(55,224,166,.03);
  animation:flick 6s infinite steps(60)}
@keyframes flick{0%,97%{opacity:.5}98%{opacity:.15}99%{opacity:.7}100%{opacity:.4}}

#terminal{position:relative;z-index:10;height:100%;width:100%}
.scr{position:absolute;inset:0;display:none;flex-direction:column;padding:clamp(14px,3vw,40px)}
.scr.is-active{display:flex;animation:scrIn .25s ease both}
@keyframes scrIn{from{opacity:0}to{opacity:1}}

/* ===== BOOT ===== */
.scr--boot{align-items:center;justify-content:center;text-align:center}
.scr--boot .frame{border:2px solid var(--line);border-radius:6px;padding:clamp(28px,6vw,64px) clamp(30px,10vw,120px);
  box-shadow:0 0 30px rgba(55,224,166,.15) inset, 0 0 30px rgba(0,0,0,.4);position:relative}
.scr--boot .frame::before,.scr--boot .frame::after{content:"";position:absolute;width:16px;height:16px;border:2px solid var(--green)}
.scr--boot .frame::before{left:-2px;top:-2px;border-right:none;border-bottom:none}
.scr--boot .frame::after{right:-2px;bottom:-2px;border-left:none;border-top:none}
.crest{width:clamp(64px,11vw,110px);height:auto;margin-bottom:10px}
.crest__shield{fill:none;stroke:var(--green);stroke-width:3;filter:drop-shadow(0 0 6px rgba(55,224,166,.6))}
.crest__ring{fill:none;stroke:var(--green);stroke-width:3}
.crest__dot{fill:var(--green)}
.boot__title{font-size:clamp(2.6rem,9vw,6rem);letter-spacing:.22em;line-height:1;font-weight:400}
.boot__sub{font-size:clamp(1rem,3vw,1.8rem);letter-spacing:.7em;text-indent:.7em;color:var(--green-dim);margin-top:4px}
.boot__status{margin-top:26px;font-size:clamp(.7rem,1.6vw,1rem);color:var(--green-dim);letter-spacing:.24em;line-height:1.9}
.boot__enter{margin-top:30px;border:1px solid var(--line);padding:14px 22px;font-size:clamp(.7rem,1.6vw,1rem);letter-spacing:.2em;border-radius:4px;transition:background .15s}
.boot__enter:hover,.boot__enter:active{background:rgba(55,224,166,.12)}
.blink{animation:blink 1.1s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}
.osline{position:absolute;bottom:14px;right:18px;font-size:.66rem;color:var(--green-dim);letter-spacing:.16em;text-shadow:none}

/* ===== DIRECTORY ===== */
.dir__head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:10px}
.dir__title{font-size:clamp(1.3rem,4vw,2.4rem);letter-spacing:.14em;font-weight:400}
.dir__org{font-size:.72rem;letter-spacing:.24em;color:var(--green-dim);margin-top:2px}
.dir__head-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.chip{border:1px solid var(--line);padding:6px 12px;font-size:.7rem;letter-spacing:.16em;border-radius:3px}
.chip:hover{background:rgba(55,224,166,.12)}
.dir__ip{font-size:.64rem;color:var(--green-dim);letter-spacing:.12em;text-shadow:none}

.searchbar{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:4px;
  margin-top:14px;padding:12px 16px;min-height:52px}
.searchbar__label{color:var(--green-dim);font-size:.8rem;letter-spacing:.24em}
.searchbar__value{font-size:clamp(1rem,2.4vw,1.5rem);letter-spacing:.06em;min-height:1.4em}
.caret{font-size:clamp(1rem,2.4vw,1.5rem);animation:blink 1s steps(2) infinite}

.results{flex:1;min-height:0;margin-top:12px;display:flex;flex-direction:column}
.results__count{font-size:.68rem;color:var(--green-dim);letter-spacing:.2em;margin-bottom:6px}
.results__count::before{content:"RESULTS: "}
.results__grid{flex:1;min-height:0;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:0 26px;
  align-content:start;padding-right:6px}
.results__grid::-webkit-scrollbar{width:6px}
.results__grid::-webkit-scrollbar-thumb{background:var(--green-dim);border-radius:3px}

.entry{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:12px 6px;border-bottom:1px solid rgba(55,224,166,.18);text-align:left;width:100%}
.entry:hover,.entry:active{background:rgba(55,224,166,.10)}
.entry.is-in{opacity:.55}
.entry__name{font-size:clamp(.95rem,2vw,1.25rem);letter-spacing:.03em}
.entry__role{font-size:.66rem;color:var(--green-dim);letter-spacing:.14em;margin-top:3px;text-transform:uppercase}
.entry__dept{text-align:right;font-size:.6rem;color:var(--green-dim);letter-spacing:.12em;line-height:1.5;white-space:nowrap}
.entry__dept b{display:block;color:var(--green);font-weight:400;font-size:.72rem}
.entry__flag{font-size:.6rem;color:var(--amber);letter-spacing:.14em}
.entry.deny .entry__flag{color:var(--red)}
.results__empty{grid-column:1/-1;color:var(--green-dim);padding:24px 6px;letter-spacing:.14em}

/* keyboard */
.keyboard{margin-top:12px;display:flex;flex-direction:column;gap:8px;align-items:center}
.krow{display:flex;gap:8px;justify-content:center;flex-wrap:nowrap}
.key{min-width:clamp(30px,4.4vw,52px);height:clamp(34px,5vw,52px);border:1px solid var(--line);border-radius:4px;
  display:flex;align-items:center;justify-content:center;font-size:clamp(.8rem,1.7vw,1.1rem);
  transition:background .08s, transform .05s;padding:0 8px}
.key:hover{background:rgba(55,224,166,.10)}
.key:active{background:rgba(55,224,166,.28);transform:translateY(1px)}
.key--wide{min-width:clamp(56px,9vw,110px);font-size:.72rem;letter-spacing:.12em;color:var(--green-dim)}
.key--space{min-width:clamp(120px,26vw,320px)}
.key--go{background:rgba(55,224,166,.16);border-color:var(--green);color:var(--green)}
.key--exit{color:var(--green-dim);letter-spacing:.2em}

.dir__foot{margin-top:10px;border-top:1px solid var(--line);padding-top:8px;font-size:.64rem;
  color:var(--green-dim);letter-spacing:.14em;text-align:right;text-shadow:none}

/* ===== ACCESS GRANTED ===== */
.scr--grant{align-items:center;justify-content:center;text-align:center}
.fx{position:absolute;inset:0;z-index:0;pointer-events:none;width:100%;height:100%}
.scr--grant .grant__arc,.scr--grant .grant__box,.scr--grant .grant__proceed{position:relative;z-index:2}
.grant__arc{width:min(680px,92vw);height:auto;margin-bottom:6px}
.grant__arc text{fill:var(--green);font-family:'VT323','Share Tech Mono',monospace;font-size:38px;letter-spacing:2px;
  filter:drop-shadow(0 0 6px rgba(55,224,166,.7))}
.grant__box{border:2px solid var(--green);border-radius:8px;padding:clamp(22px,5vw,52px) clamp(28px,9vw,100px);
  box-shadow:0 0 40px rgba(55,224,166,.25) inset, 0 0 40px rgba(55,224,166,.15);animation:stampIn .35s ease both}
@keyframes stampIn{from{transform:scale(1.15);opacity:0}to{transform:scale(1);opacity:1}}
.grant__stamp{font-size:clamp(1.1rem,3.4vw,2rem);letter-spacing:.24em;color:var(--green-dim)}
.grant__welcome{margin-top:10px;font-size:clamp(1rem,3vw,1.7rem);letter-spacing:.16em}
.grant__name{font-family:'VT323','Share Tech Mono',monospace;font-size:clamp(2.2rem,8vw,4.6rem);letter-spacing:.03em;line-height:1;margin:2px 0 4px;color:#daffee;text-transform:uppercase}
.grant__role{font-size:.78rem;color:var(--green-dim);letter-spacing:.22em;text-transform:uppercase}
.grant__confirm{margin-top:16px;font-size:clamp(1.1rem,3vw,1.7rem);letter-spacing:.14em;color:#8bffcf;font-weight:400;
  text-shadow:0 0 14px rgba(55,224,166,.8);animation:confirmPulse 1s ease-in-out infinite}
.grant__confirm[hidden]{display:none}
@keyframes confirmPulse{0%,100%{opacity:.85;text-shadow:0 0 12px rgba(55,224,166,.6)}50%{opacity:1;text-shadow:0 0 22px rgba(55,224,166,.95)}}
.grant__next{margin-top:12px;font-size:clamp(.8rem,1.9vw,1.05rem);letter-spacing:.08em;color:var(--green-dim)}
.grant__next[hidden]{display:none}
.grant__msg{margin-top:18px;font-size:clamp(1rem,2.6vw,1.6rem);letter-spacing:.14em}
.grant__gift{margin-top:16px;font-size:clamp(.8rem,2vw,1.15rem);letter-spacing:.12em;color:var(--amber);text-shadow:0 0 12px rgba(255,207,106,.5);border:1px solid rgba(255,207,106,.5);padding:10px 14px;border-radius:4px;animation:giftPulse 1.1s ease-in-out infinite}
@keyframes giftPulse{0%,100%{opacity:.78}50%{opacity:1}}
.entry__flag--gift{color:var(--amber);display:block;margin-top:2px}
.grant__actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:24px}
.grant__actions[hidden]{display:none}
.gbtn{border:1px solid var(--green);border-radius:4px;padding:14px 22px;font-size:clamp(.78rem,1.8vw,1.05rem);
  letter-spacing:.14em;color:var(--green);transition:background .12s,transform .05s}
.gbtn:hover{background:rgba(55,224,166,.14)}
.gbtn:active{background:rgba(55,224,166,.3);transform:translateY(1px)}
.grant__proceed{position:absolute;left:50%;transform:translateX(-50%);bottom:clamp(18px,4vw,42px);
  border:2px solid var(--green);border-radius:6px;padding:16px 40px;font-size:clamp(.85rem,2vw,1.15rem);
  letter-spacing:.2em;background:rgba(55,224,166,.12);color:var(--green);animation:proceedPulse 1.6s ease-in-out infinite}
.grant__proceed:hover{background:rgba(55,224,166,.24)}
.grant__proceed[hidden]{display:none}
@keyframes proceedPulse{0%,100%{box-shadow:0 0 10px rgba(55,224,166,.2)}50%{box-shadow:0 0 26px rgba(55,224,166,.5)}}
/* denied variant */
.scr--grant.denied .grant__box{border-color:var(--red);box-shadow:0 0 40px rgba(255,90,82,.25) inset,0 0 40px rgba(255,90,82,.18);animation:denyShake .4s steps(3) both}
.scr--grant.denied .grant__stamp,.scr--grant.denied .grant__msg{color:var(--red)}
.scr--grant.denied .grant__name{color:#ffd9d6}
@keyframes denyShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}

/* ===== DRINK / DETAILS SHEETS ===== */
.sheet{position:fixed;inset:0;z-index:55;background:rgba(2,10,7,.94);display:flex;align-items:center;justify-content:center;padding:clamp(14px,3vw,30px)}
.sheet[hidden]{display:none}
.sheet__panel{width:min(760px,96vw);max-height:92vh;display:flex;flex-direction:column;
  border:2px solid var(--green);border-radius:8px;background:linear-gradient(180deg,#05241a,#03150f);
  box-shadow:0 0 40px rgba(55,224,166,.2) inset;animation:scrIn .25s ease both}
.sheet__head{text-align:center;padding:clamp(16px,3vw,26px);border-bottom:1px solid var(--line)}
.sheet__title{font-size:clamp(1.3rem,4vw,2.2rem);letter-spacing:.1em;font-weight:400}
.sheet__sub{margin-top:6px;font-size:.72rem;color:var(--green-dim);letter-spacing:.2em}
.sheet__body{overflow-y:auto;padding:clamp(14px,3vw,26px);display:flex;flex-direction:column;gap:16px}
.sheet__body::-webkit-scrollbar{width:6px}
.sheet__body::-webkit-scrollbar-thumb{background:var(--green-dim);border-radius:3px}
.menu__item{border-bottom:1px dashed rgba(55,224,166,.22);padding-bottom:14px}
.menu__item:last-child{border-bottom:none;padding-bottom:0}
.menu__row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.menu__time{color:var(--amber);font-size:.82rem;letter-spacing:.14em;min-width:74px}
.menu__name{font-size:clamp(1rem,2.4vw,1.35rem);letter-spacing:.06em;color:#daffee}
.menu__tag{margin-left:auto;font-size:.62rem;letter-spacing:.16em;color:var(--amber);border:1px solid rgba(255,207,106,.5);border-radius:3px;padding:2px 8px}
.menu__desc{margin-top:5px;font-size:.82rem;line-height:1.55;color:var(--green-dim);letter-spacing:.03em;text-shadow:none}
.sheet__close{margin:clamp(12px,2vw,20px);align-self:center;border:1px solid var(--green);border-radius:4px;
  padding:14px 28px;letter-spacing:.18em;color:var(--green)}
.sheet__close:hover{background:rgba(55,224,166,.14)}

/* ===== BOARD ===== */
.board__head{text-align:center;border:2px solid var(--line);border-radius:6px;padding:16px;margin-bottom:16px}
.board__title{font-size:clamp(1.2rem,4vw,2.2rem);letter-spacing:.12em;font-weight:400}
.board__sub{font-size:.72rem;color:var(--green-dim);letter-spacing:.22em;margin-top:6px}
.board__grid{flex:1;min-height:0;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;align-content:start}
.board__cell{border:1px solid var(--line);border-radius:4px;padding:14px 12px;text-align:center;font-size:clamp(.85rem,1.8vw,1.15rem);letter-spacing:.04em}
.board__empty{grid-column:1/-1;text-align:center;color:var(--green-dim);padding:40px;letter-spacing:.16em}
.board__back{align-self:center;margin-top:16px;border:1px solid var(--line);padding:12px 22px;letter-spacing:.18em;border-radius:4px}
.board__back:hover{background:rgba(55,224,166,.12)}

/* ===== ADMIN ===== */
.admin{position:fixed;inset:0;z-index:60;background:rgba(2,10,7,.9);display:flex;align-items:center;justify-content:center;padding:20px}
.admin[hidden]{display:none}
.admin__panel{width:min(680px,94vw);border:2px solid var(--line);border-radius:8px;background:var(--bg2);padding:22px}
.admin__panel h3{letter-spacing:.2em;font-weight:400;margin-bottom:10px}
.admin__note{font-size:.74rem;color:var(--green-dim);letter-spacing:.06em;line-height:1.6;margin:8px 0}
#importText{width:100%;height:150px;background:#03130d;border:1px solid var(--line);color:var(--green);
  font-family:inherit;font-size:.85rem;padding:12px;border-radius:4px;resize:vertical}
.admin__row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.admin__row button{border:1px solid var(--line);padding:10px 16px;letter-spacing:.1em;border-radius:4px;font-size:.78rem}
.admin__row button:hover{background:rgba(55,224,166,.12)}
.admin__row .danger{border-color:rgba(255,90,82,.5);color:var(--red)}
.admin__close{margin-top:16px;border:1px solid var(--line);padding:10px 20px;border-radius:4px;letter-spacing:.16em}

@media (max-width:640px){
  .results__grid,.board__grid{grid-template-columns:1fr}
  .key{min-width:26px}
}
@media (prefers-reduced-motion: reduce){
  .flicker,.blink,.caret{animation:none}
}
