:root{
  --ink:#14120f; --ink2:#1e1b16; --ivory:#f5efe3; --paper:#faf7f0;
  --gold:#c9a227; --gold2:#a8861b; --line:#e3dac6; --muted:#7a7263;
  --ok:#2e7d4f; --bad:#b3372c; --radius:14px;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Avenir Next","Segoe UI",system-ui,sans-serif;background:var(--paper);color:var(--ink)}
h1,h2,h3,.brand{font-family:Georgia,"Times New Roman",serif;font-weight:500}
.topbar{display:flex;align-items:center;gap:18px;padding:14px 22px;background:var(--ink);color:var(--ivory);position:sticky;top:0;z-index:10}
.brand{font-size:22px;letter-spacing:.14em}
.gold{color:var(--gold)}
nav{display:flex;gap:6px;flex:1}
.navbtn{background:none;border:1px solid transparent;color:var(--ivory);padding:7px 12px;border-radius:99px;cursor:pointer;font-size:14px}
.navbtn.active{border-color:var(--gold);color:var(--gold)}
.authbox{display:flex;align-items:center;gap:10px;font-size:13px}
.testbadge{border:1px solid var(--gold);color:var(--gold);padding:3px 8px;border-radius:99px;font-size:11px;letter-spacing:.06em}
main{max-width:1080px;margin:0 auto;padding:28px 18px 60px}
.hero h1{font-size:42px;line-height:1.15;margin:10px 0 6px}
.hero em{color:var(--gold2);font-style:italic}
.sub{color:var(--muted);font-size:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:22px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 1px 3px rgba(20,18,15,.05)}
.card h3{margin:0 0 2px;font-size:22px}
.avatar{width:64px;height:64px;border-radius:50%;background:var(--ink);color:var(--gold);display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:26px;margin-bottom:10px}
.tag{display:inline-block;background:var(--ivory);border:1px solid var(--line);border-radius:99px;padding:2px 10px;font-size:12px;margin:2px 3px 2px 0}
.pricechip{display:flex;justify-content:space-between;border-top:1px dashed var(--line);padding:8px 0 0;margin-top:8px;font-size:15px}
.pricechip b{color:var(--gold2)}
.btn{background:var(--ink);color:var(--ivory);border:1px solid var(--ink);padding:9px 18px;border-radius:99px;cursor:pointer;font-size:14px}
.btn:hover{background:var(--ink2)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:600}
.btn.ghost{background:none;color:inherit;border-color:var(--line)}
.btn.small{padding:5px 12px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.hidden{display:none!important}
.blink{animation:blinkAnim 1s steps(2,start) infinite}
@keyframes blinkAnim{to{visibility:hidden}}
label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
label input,label select,label textarea{display:block;width:100%;margin-top:4px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font-size:15px;color:var(--ink);background:#fff}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}
.err{color:var(--bad);font-size:13px;min-height:16px}
.hint{color:var(--muted);font-size:12px}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:10px 0}
.slot{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px;cursor:pointer;text-align:left;font-size:13px}
.slot.sel{border-color:var(--gold);background:#fdf6dd}
.slot small{display:block;color:var(--muted)}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:left;vertical-align:top}
dialog{border:none;border-radius:var(--radius);padding:0;max-width:420px;width:92vw}
.dialog-card{padding:22px}
.pillars{display:flex;gap:10px;margin:10px 0}
.pillar{flex:1;text-align:center;border:1px solid var(--line);border-radius:10px;padding:10px 4px;background:#fff}
.pillar .hanja{font-size:24px;font-family:Georgia,serif}
.pillar small{color:var(--muted);display:block}
.status{font-size:12px;border-radius:99px;padding:2px 9px;border:1px solid var(--line)}
.status.paid,.status.confirmed,.status.completed{border-color:var(--ok);color:var(--ok)}
.status.requested{border-color:var(--gold);color:var(--gold2)}
footer{max-width:1080px;margin:0 auto;padding:18px;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}
.roomwrap{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;grid-template-areas:"video captions" "extras captions"}
.videoblock{grid-area:video}
.captionblock{grid-area:captions}
.extrasblock{grid-area:extras}
video{width:100%;background:#000;border:1px solid var(--line);border-radius:10px;aspect-ratio:4/3;object-fit:cover}
.videowrap{position:relative;margin-top:10px}
#localVideo{position:absolute;right:10px;bottom:10px;width:26%;z-index:2}
.captionlog{height:300px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}
.captionlog .line{margin-bottom:8px;font-size:14px}
.captionlog .who{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.captionlog .tr{color:var(--gold2)}
@media (max-width:760px){.roomwrap{grid-template-columns:1fr;grid-template-areas:"video" "captions" "extras"}.captionlog{height:180px}.hero h1{font-size:32px}}
