@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--navy:#152f49;--deep:#10253a;--blue:#1866b1;--bg:#f5f7fb;--border:#e2e8ef;--ink:#1b2d40;--muted:#8291a1;--green:#12a978;--blue-light:#eaf4ff}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:'DM Sans','Noto Sans KR',sans-serif;font-size:14px;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,p{margin-top:0}h1{font-size:30px;letter-spacing:-1.2px}h2{font-size:19px;letter-spacing:-.5px}p{line-height:1.8;color:#82909e}.shell{min-height:100vh;display:flex}.sidebar{width:246px;flex:0 0 246px;background:#132b43;color:#fff;display:flex;flex-direction:column;min-height:100vh;padding:34px 17px 22px;position:sticky;top:0;height:100vh}.brand{font-weight:800;font-size:21px;letter-spacing:1.2px;padding:0 15px;display:flex;align-items:center;gap:12px}.brand-icon{display:inline-grid;place-items:center;background:#4a93e5;color:#fff;border-radius:11px;width:35px;height:35px;font-size:22px;font-weight:800}.side-overline{font-size:10px;letter-spacing:2px;color:#6385a5;margin:10px 0 65px 63px}.side-menu{display:grid;gap:8px}.nav{border:0;color:#adc0d4;background:transparent;text-align:left;padding:15px 17px;border-radius:9px;display:flex;align-items:center;gap:14px;font-size:15px}.nav span{font-size:13px}.nav.active,.nav:hover{background:#244967;color:#fff}.side-bottom{margin-top:auto;border-top:1px solid #31506b;padding-top:22px;display:flex;align-items:center;gap:10px}.user-mark,.avatar{display:grid;place-items:center;border-radius:50%;background:#37658c;color:#fff;font-weight:700}.user-mark{width:35px;height:35px}.user-meta{display:flex;flex-direction:column;gap:4px}.user-meta strong{font-size:12px}.user-meta small{color:#8da7c0;font-size:11px}.logout{margin-left:auto;background:none;border:0;color:#c8d5e0;font-size:22px}.main{flex:1;min-width:0;padding:38px 48px 80px;max-width:1700px}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.top h1{margin:9px 0 0}.breadcrumb{font-size:10px;letter-spacing:1.6px;color:#94a2b0;font-weight:700}.top-right{display:flex;align-items:center;gap:10px;color:#728399;font-size:12px}.top-right small{font-size:11px}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #ddf7ed}.avatar{width:34px;height:34px;margin-left:15px}.card{background:#fff;border:1px solid #e8edf3;box-shadow:0 7px 25px rgba(26,56,91,.025);border-radius:13px}.eventbar{display:flex;align-items:center;gap:28px;padding:20px 24px;margin-bottom:22px}.field-label{font-size:11px;color:#97a4b2;margin-bottom:7px}select,input,textarea{background:#fff;border:1px solid #dce4ed;border-radius:8px;padding:12px 13px;color:var(--ink);outline:0;min-width:0}select:focus,input:focus,textarea:focus{border-color:#5497e4;box-shadow:0 0 0 3px #e3f0ff}.eventbar select{min-width:290px;font-weight:700}.event-sub{font-size:12px;color:#8594a5;flex:1}.btn{padding:12px 17px;border-radius:8px;border:1px solid transparent;font-weight:700;font-size:12px;white-space:nowrap}.btn.primary{background:#1662aa;color:#fff}.btn.primary:hover{background:#0d4d8f}.btn.outline{background:white;border:1px solid #dbe4ef;color:#59728a}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:44px}.stat{padding:20px 24px;min-height:127px}.stat small{color:#8e9dad;font-size:11px}.stat div:not(.progress){margin-top:16px}.stat strong{font-size:31px;letter-spacing:-1px}.stat span{font-size:13px;margin-left:5px;color:#99a7b4}.progress{height:5px;background:#e9f0f7;border-radius:50px;margin-top:11px;overflow:hidden}.progress i{height:100%;display:block;width:0;background:#287ac1;transition:width .25s}.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:20px;gap:18px}.section-head h2{margin:0 0 7px}.section-head p{margin:0;font-size:12px}.legend{display:flex;align-items:center;gap:18px;white-space:nowrap;font-size:11px;color:#8090a1}.legend span{display:flex;gap:7px;align-items:center}.swatch{display:inline-block;width:10px;height:10px;border-radius:3px}.swatch.vacant{background:#eaf4ff;border:1px solid #9cc4ed}.swatch.taken{background:#dae2ec}.swatch.mine{background:#176ab8}.tables{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.table-card{background:white;border:1px solid #e3e9f0;border-radius:12px;padding:20px;min-width:0}.table-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.table-header strong{font-size:14px}.table-header small{color:#94a4b4;font-size:11px}.table-occupancy{height:4px;border-radius:20px;background:#ecf2f7;margin-bottom:17px;overflow:hidden}.table-occupancy i{display:block;height:100%;background:#4a98dc}.seat-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.seat{min-height:67px;background:#f0f7ff;border:1px solid #d6e9fc;border-radius:8px;display:flex;flex-direction:column;justify-content:center;text-align:center;padding:7px 4px;gap:5px;transition:transform .12s,border .12s;min-width:0}.seat:not(.taken):hover{border-color:#3d89cd;transform:translateY(-2px)}.seat .seat-no{font-size:10px;color:#93acc5}.seat .seat-name{font-size:12px;font-weight:700;color:#2d6daa;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat.taken{background:#f3f5f8;border-color:#e9edf1}.seat.taken .seat-name{color:#6e7c8b}.seat.mine{background:#e7f1fe;border:1px solid #2679c7}.seat.mine .seat-name{color:#0b5aab}.seat.taken:not(.mine){cursor:default}.admin .seat.taken{cursor:pointer}.footnote{font-size:11px;color:#8e9cab;margin-top:30px;line-height:1.8}.notice{background:#fff5e2;color:#95691e;border:1px solid #f4dfb6;padding:14px 18px;border-radius:9px;margin-bottom:20px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{padding:28px}.panel p{font-size:12px}.panel h2{margin:0 0 8px}.form-grid,form{display:grid;gap:14px}.panel label,.login-card label{font-size:12px;font-weight:600;display:grid;gap:7px;color:#516274}.panel input,.panel select,.panel textarea,.login-card input{width:100%}.panel .btn{justify-self:start}.space-top{margin-top:20px}.admin-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.hint{font-size:11px!important;color:#9aa8b6!important}.sample-link{font-size:12px;color:#2169b1;text-decoration:none}.members-title{display:flex;align-items:center;justify-content:space-between;gap:16px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;margin-top:18px;text-align:left}th,td{padding:13px 12px;border-bottom:1px solid #eef1f5;font-size:12px}th{color:#8494a5;font-size:11px}td button{background:white;border:1px solid #dae3ed;border-radius:6px;padding:6px 9px;margin:2px}.pill{padding:4px 9px;border-radius:100px;background:#def7e9;color:#14835e;font-size:11px}.pill.off{background:#f0f1f4;color:#768392}.account-panel{max-width:520px}.modal-wrap{position:fixed;inset:0;display:grid;place-items:center;z-index:20;padding:20px}.modal-bg{position:absolute;inset:0;background:rgba(8,25,41,.6)}.modal{position:relative;width:min(430px,100%);padding:32px;text-align:center}.modal-icon{margin:auto auto 12px;display:grid;place-items:center;background:#e9f4ff;border-radius:50%;height:55px;width:55px;color:#236db3;font-size:24px}.modal h2{margin:12px 0}.modal p{font-size:13px}.modal-close{position:absolute;right:16px;top:12px;border:0;background:transparent;font-size:24px;color:#8294a5}.modal-buttons{display:flex;justify-content:center;gap:10px;margin-top:25px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:#183750;color:#fff;padding:13px 22px;border-radius:8px;font-size:12px;box-shadow:0 12px 30px #102a453b;opacity:0;transition:.2s;pointer-events:none;z-index:40}.toast.show{opacity:1;transform:translate(-50%,0)}[hidden]{display:none!important}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-art{background:linear-gradient(150deg,#102d48,#163d5e 67%,#25639a);color:white;padding:55px 75px;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.brand.large{padding:0}.login-art h1{font-size:clamp(36px,4vw,65px);line-height:1.36;letter-spacing:-3px}.login-art p{color:#a9c2d8;font-size:16px}.eyebrow{color:#5fa9ee;letter-spacing:3px;font-size:12px;font-weight:800}.art-footer{font-size:12px;color:#a1bad0}.login-panel{display:grid;place-items:center;padding:40px}.login-card{max-width:400px;width:100%;gap:19px}.login-card h2{font-size:34px;margin:0}.login-card p{margin:-10px 0 15px}.submark{font-weight:800;color:#2c7bc5;letter-spacing:2px;font-size:11px}.login-card input{padding:15px}.wide{width:100%;padding:16px;display:flex;justify-content:space-between}.login-card .hint{text-align:center;margin-top:5px}@media(max-width:1200px){.tables{grid-template-columns:repeat(3,minmax(0,1fr))}.main{padding:30px}.sidebar{width:215px;flex-basis:215px}}@media(max-width:900px){.tables{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.sidebar{width:80px;flex-basis:80px;padding:28px 10px}.sidebar .brand{font-size:0;padding:0 12px}.side-overline,.nav span,.user-meta,.logout{display:none}.nav{justify-content:center}.user-mark{margin:auto}.top-right small{display:none}.section-head{align-items:start;flex-direction:column}.eventbar{flex-wrap:wrap}.event-sub{flex-basis:100%;order:3}}@media(max-width:600px){.shell{display:block}.sidebar{width:100%;height:auto;min-height:0;position:static;display:flex;flex-direction:row;padding:10px 12px;align-items:center}.sidebar .brand{padding:0;font-size:0}.brand-icon{width:30px;height:30px}.side-menu{display:flex;margin-left:auto;gap:4px}.nav{padding:9px 12px}.side-bottom{display:none}.main{padding:22px 16px 65px}.top h1{font-size:25px}.top-right{font-size:10px}.top-right .avatar{display:none}.eventbar{padding:15px;gap:12px}.eventbar select{min-width:0;width:100%}.eventbar>div:first-child{flex:1}.eventbar .btn{padding:10px}.stat{min-height:95px;padding:14px}.stat strong{font-size:26px}.stats{gap:10px;margin-bottom:30px}.tables{gap:12px}.table-card{padding:12px}.seat-list{gap:6px}.seat{padding:6px 2px;min-height:63px}.seat .seat-name{font-size:11px}.section-head{gap:10px}.legend{gap:10px;flex-wrap:wrap}.login-shell{grid-template-columns:1fr}.login-art{min-height:230px;padding:30px;gap:28px}.login-art h1{font-size:32px;margin:15px 0}.login-art p,.art-footer{display:none}.login-panel{padding:50px 24px}.panel{padding:20px}.members-title{align-items:start;flex-direction:column}}

/* Event hall: fixed logical coordinate system, scrollable on mobile */
.floor-scroll{overflow:auto;max-width:100%;border:1px solid #dfe8f2;border-radius:13px;background:#f0f4f8;margin:12px 0}
.floor-canvas,.layout-canvas{width:1200px;height:940px;position:relative;background-color:#f7f9fc;background-image:linear-gradient(to right,#e8edf4 1px,transparent 1px),linear-gradient(to bottom,#e8edf4 1px,transparent 1px);background-size:40px 40px}
.floor-canvas .table-card{position:absolute;width:170px;padding:10px;border:1px solid #ccd9e5;box-shadow:0 4px 12px #213c5312}
.floor-canvas .table-header{margin-bottom:6px}.floor-canvas .table-occupancy{margin-bottom:8px}.floor-canvas .seat-list{gap:4px;grid-template-columns:repeat(2,minmax(0,1fr))}.floor-canvas .seat{min-height:30px;gap:1px;padding:2px}.floor-canvas .seat .seat-no{font-size:9px}.floor-canvas .seat .seat-name{font-size:10px}
.layout-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}.layout-toolbar select{min-width:250px}.layout-toolbar span{color:#728399;font-size:12px}
.layout-piece{position:absolute;width:170px;min-height:100px;background:#fff;border:2px solid #5e9cda;border-radius:14px;padding:16px;text-align:center;box-shadow:0 8px 16px #162b4020;cursor:grab;touch-action:none;user-select:none;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;z-index:1}.layout-piece strong{font-size:15px}.layout-piece small{color:#697d90}.layout-piece span{font-size:11px;color:#317ac0}.layout-piece.dragging{cursor:grabbing;border-color:#ed8d31;box-shadow:0 15px 30px #162b4030;z-index:5}

/* v2 banquet-style round tables and clear seat states */
.floor-canvas,.layout-canvas{width:1600px;height:1450px;background-size:50px 50px}
.floor-canvas .table-card.round-card,.layout-piece{position:absolute;width:210px;height:210px;min-height:0;padding:0;border:0;background:transparent;box-shadow:none;border-radius:50%;overflow:visible}
.round-stage{width:210px;height:210px;position:relative;user-select:none}
.round-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:104px;height:104px;border-radius:50%;background:linear-gradient(145deg,#fff,#e8f0fa);border:3px solid #7eabce;box-shadow:0 6px 17px #1e47631f;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:6px;padding:8px}
.round-center strong{font-size:12px;color:#1e4b76;line-height:1.35}.round-center small{font-size:10px;color:#617f98}
.chair,.preview-chair{position:absolute;transform:translate(-50%,-50%);width:70px;height:44px;border-radius:11px;border:2px solid #92c4ef;background:#e8f5ff;color:#1560a3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px 3px;box-shadow:0 2px 4px #113a5b14;font-size:10px;line-height:1.15;z-index:2}
.chair-number{font-size:9px;font-weight:600;opacity:.9}.chair-name{font-size:10px;font-weight:800;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.chair.seat.taken:not(.mine){background:#f9cfce;border-color:#db7273;color:#82292c;opacity:1}
.chair.seat.mine{background:#1c70bf;border-color:#0f4e91;color:#fff;opacity:1;box-shadow:0 0 0 3px #7eb6ed66}
.chair.seat:not(.taken):not(:disabled):hover{background:#cee9ff;border-color:#1d76c7;transform:translate(-50%,-50%) scale(1.07)}
.chair.seat:disabled{opacity:1;cursor:default}.chair.seat:focus-visible{outline:3px solid #f3a344;outline-offset:2px}
.preview-chair{background:#e8f3fb;border-color:#8cbbdf;color:#35668e;width:43px;height:36px;font-weight:700}
.layout-piece{cursor:grab;touch-action:none;z-index:1;border-radius:0}.layout-piece.dragging{z-index:10;cursor:grabbing;filter:drop-shadow(0 12px 12px #183b5b55)}.layout-piece .round-center{border-color:#398dcc;background:#fff}
.drag-tip{position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);padding:3px 8px;border-radius:5px;white-space:nowrap;background:#ffffffde;color:#376f9d;font-size:10px;pointer-events:none}
.swatch.vacant{background:#e8f5ff;border:1px solid #92c4ef}.swatch.taken{background:#f9cfce;border:1px solid #db7273}.swatch.mine{background:#1c70bf}
.layout-window .sidebar,.layout-window .top,.layout-window #view-seats,.layout-window #view-manage,.layout-window #view-members,.layout-window #view-account{display:none!important}
.layout-window .main{max-width:none;width:100%;padding:16px}.layout-window .shell{display:block}.layout-window #view-layout{display:block!important}.layout-window #view-layout>.panel{padding:18px}.layout-window .floor-scroll{max-height:none;height:auto;overflow-x:auto;overflow-y:visible}
@media(max-width:600px){.floor-canvas,.layout-canvas{width:1600px;height:1450px}.floor-canvas .table-card.round-card{padding:0}.chair .chair-name{font-size:10px}}

/* v3: chairs sit closer to the round table without overlapping adjacent chairs at 8 seats. */
.round-stage .chair:not(.preview-chair){width:66px}
.round-stage .preview-chair{width:40px}

/* v4: larger administrator placement workspace and clearer major grid */
.layout-canvas{width:2000px;height:1800px;background-size:80px 80px;background-color:#f7f9fc;background-image:linear-gradient(to right,#dce5ef 1px,transparent 1px),linear-gradient(to bottom,#dce5ef 1px,transparent 1px)}
/* Keep the member hall at its previous saved-coordinate size. */
.floor-canvas{width:1600px;height:1450px;background-size:50px 50px}
@media(max-width:600px){.layout-canvas{width:2000px;height:1800px}.floor-canvas{width:1600px;height:1450px}}

/* v5: The wide layout editor grows to the canvas height; only the browser page scrolls vertically. */
.layout-window #view-layout .floor-scroll{max-height:none!important;height:auto!important;min-height:0;overflow-x:auto;overflow-y:visible}
