:root{--bg:#07131f;--paper:#102233;--paper2:#12293b;--line:#2a4152;--gold:#f2c572;--gold2:#d9a350;--text:#f4f7fa;--muted:#a8b8c7;--green:#67daa8;--red:#f18d92;--gray:#9da7b5;--amber:#ffcd76;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 80% -10%,#223e53 0%,#07131f 55%);font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}a{color:var(--gold)}.shell{width:min(1240px,100% - 36px);margin:0 auto}.topbar{border-bottom:1px solid #30465b88;background:#081725e8;position:sticky;top:0;z-index:50;backdrop-filter:blur(12px)}.topbar-inner,.head-actions,.brand,.tags,.button-row{display:flex;align-items:center;gap:12px}.topbar-inner{justify-content:space-between;padding:12px 0;gap:12px}.brand{text-decoration:none;color:var(--text)}.brand-icon{display:grid;place-items:center;background:linear-gradient(145deg,#fae5ad,#c58c35);color:#112536;font-weight:1000;font-size:26px;width:46px;height:46px;border-radius:13px;position:relative;box-shadow:0 4px 18px #b27f3266}.brand-icon span{font-size:10px;position:absolute;top:2px;right:3px}.brand b{display:block;letter-spacing:.075em;font-size:17px}.brand small{display:block;color:#b1c4d1;font-size:10px;letter-spacing:.08em;margin-top:2px}.btn{appearance:none;border:0;background:#273d4e;color:var(--text);padding:11px 16px;border-radius:11px;font-size:13px;font-weight:800;transition:.14s}.btn:hover{filter:brightness(1.15)}.btn.primary{background:var(--gold);color:#182433}.btn.secondary{background:#233f54;border:1px solid #476278}.btn.ghost{background:transparent;border:1px solid #577083}.btn:disabled{opacity:.48;cursor:not-allowed}.badge{white-space:nowrap;display:inline-block;padding:7px 10px;border:1px solid #506779;background:#142b3b;color:#ccdae6;font-size:10px;font-weight:900;border-radius:100px;letter-spacing:.045em}.badge.ok{background:#163d34;color:#8ef4c2;border-color:#2e7259}.badge.error{background:#4a2830;color:#ffc4c8;border-color:#9d5560}.badge.warn{background:#4a3925;color:#ffd893;border-color:#8f6736}.hero{display:grid;grid-template-columns:1.28fr .72fr;gap:24px;align-items:center;padding:36px 0 22px}.hero h1{font-size:clamp(32px,4vw,60px);line-height:1.06;letter-spacing:-.042em;margin:11px 0 16px}.hero h1 em{font-style:normal;color:var(--gold)}.hero p{color:var(--muted);line-height:1.7;max-width:580px;font-size:14px}.eyebrow,.smallcaps{letter-spacing:.15em;color:var(--gold);font-size:11px;font-weight:900}.tags{gap:7px;flex-wrap:wrap;margin-top:17px}.tags span{font-size:11px;border:1px solid #3b596b;padding:7px 11px;border-radius:20px;color:#d2e1eb}.event-hero{border:1px solid #785c36;background:linear-gradient(145deg,#283647,#182b3d 64%,#483c27);border-radius:20px;padding:25px;box-shadow:0 13px 43px #0004;min-height:173px}.event-hero h2{font-size:27px;margin:10px 0 7px}.event-hero p{font-size:12px;margin:0 0 12px}.event-pill{border:1px solid #c9a56c;background:#4f432f;padding:6px 11px;border-radius:20px;font-size:10px;display:inline-block;font-weight:900}.notice{padding:12px 16px;background:#2b352b;border:1px solid #5e7253;border-radius:12px;font-size:12px;color:#e4e9d7;margin-bottom:15px}.notice.error{background:#462730;border-color:#975463;color:#ffd2d7}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:12px 0 22px}.stat{padding:17px 18px;border:1px solid var(--line);background:#102437;border-radius:15px}.stat small{font-size:10px;letter-spacing:.06em;color:#a5bed0;display:block}.stat strong{font-size:31px;display:block;margin-top:8px}.public-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:17px;align-items:start}.card{border:1px solid var(--line);background:linear-gradient(170deg,#132a3c,#0d1e2e);border-radius:var(--radius);overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;padding:17px 19px;gap:13px;border-bottom:1px solid var(--line)}.card-head h2,.card-head h3{margin:0;font-size:16px}.card-head p{color:var(--muted);font-size:11px;margin:5px 0 0}.map-scroll{height:auto;max-height:660px;min-height:280px;overflow:auto;background:#091523;padding:10px;scrollbar-color:#597188 #112336}.map-inner{width:100%;min-width:100%;transform-origin:top left}.map-canvas{position:relative;width:100%;line-height:0;border-radius:10px;overflow:hidden;border:1px solid #314353;background:#1b2935}.map-canvas img{width:100%;display:block;user-select:none;pointer-events:none}.map-pins{position:absolute;inset:0}.map-pin{position:absolute;transform:translate(-50%,-50%);padding:5px 7px;font-size:10px;line-height:1.1;border:1px solid #758ca1;background:#1d324bea;color:white;font-weight:850;border-radius:8px;white-space:nowrap;min-width:34px;text-align:center;box-shadow:0 2px 9px #0008;touch-action:manipulation}.map-pin.available{background:#15543dea;border-color:#64caa1}.map-pin.blocked{background:#343c47e8;border-color:#8e9bad}.map-pin.sold{background:#7c2532e8;border-color:#f18d92}.map-pin.selected{outline:2px solid var(--gold);z-index:3}.map-pin.is-editing{background:#bd8e26;color:#091523}.map-empty{padding:50px 22px;text-align:center;color:#d1dfeb;line-height:1.7;font-size:13px}.zoom-tools{display:flex;gap:5px}.zoom-tools button{border:1px solid #3b5870;border-radius:8px;background:#233d53;color:#fff;font-size:18px;font-weight:900;width:35px;height:33px}.legend{display:flex;flex-wrap:wrap;padding:15px 18px 0;gap:12px;color:#c4d3e0;font-size:11px}.key{width:9px;height:9px;display:inline-block;border-radius:100%;margin-right:3px}.key.green{background:var(--green)}.key.red{background:var(--red)}.key.amber{background:var(--amber)}.key.gray{background:var(--gray)}.hint{font-size:11px;line-height:1.6;color:#aab9c9;padding:0 18px;margin:11px 0 17px}.list-pad{padding:17px}.list-pad select{margin-bottom:15px}.lot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;max-height:430px;overflow:auto;min-height:85px}.lot-btn{padding:9px 5px;border:1px solid #516377;background:#213748;border-radius:10px;color:#edf5fd;font-size:12px;font-weight:800;min-height:55px}.lot-btn small{display:block;color:#c0cfdb;font-size:10px;margin-top:4px}.lot-btn.selected{outline:2px solid var(--gold)}.lot-btn.available{background:#174330;border-color:#3c996a}.lot-btn.sold{background:#5a2833;border-color:#a35262}.lot-btn.blocked{background:#343e4d}.detail{border:1px solid #3d576b;background:#0e2333;padding:18px;border-radius:14px;margin-top:17px;min-height:110px}.detail h3{margin:5px 0;font-size:22px}.detail p{font-size:12px;color:var(--muted);line-height:1.6}.detail .label{color:var(--gold);font-size:11px;letter-spacing:.08em;font-weight:800}.status-pill{font-weight:900;font-size:10px;border-radius:15px;padding:5px 9px;background:#2d4254;display:inline-block}.status-pill.available{background:#14533b;color:#adf5d5}.status-pill.sold{background:#5a2533;color:#ffd3dc}.status-pill.blocked{background:#343b48;color:#d0d7df}.status-pill.notready{background:#584322;color:#ffe1a6}label{display:block;color:#cad7e1;font-size:12px;font-weight:750;margin:0 0 6px}input,select{border:1px solid #456278;border-radius:10px;background:#0b1c2b;color:#f5f7fa;padding:11px 12px;min-height:42px;width:100%;outline:none}input:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 2px #e9bd6933}input::placeholder{color:#8599a9}hr{border:0;border-top:1px solid #344e61;margin:23px 0}.admin{margin-top:31px;border:1px solid #3a576e;border-radius:22px;background:#0a1a29;padding:18px}.admin-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.admin-head h2{font-size:26px;margin:7px 0}.admin-head p{color:var(--muted);font-size:12px;margin:0}.admin-grid{display:grid;grid-template-columns:325px 1fr;gap:15px}.admin .card{background:#112538}.admin .body{padding:17px}.admin .body h3{font-size:14px;margin:0 0 12px}.admin .body p{font-size:12px;line-height:1.65}.admin .muted,.muted{color:var(--muted);font-size:12px}.event-list{display:flex;flex-direction:column;gap:7px;max-height:300px;overflow:auto}.event-choice{border:1px solid #42576e;border-radius:11px;padding:10px;background:#172e43;color:#f3f6fa;text-align:left;width:100%;font-weight:700}.event-choice small{display:block;color:#adc3d1;font-size:10px;margin-top:5px}.event-choice.on{background:#58472a;border-color:#e2b96c}.form-col{display:flex;flex-direction:column;gap:9px}.form-col label{margin-top:5px}.soft-box{padding:14px;border:1px solid #50677a;border-radius:12px;background:#1b3041}.soft-box p{color:#c0d0db}.section{padding:5px 0 24px;border-bottom:1px solid #3b5365;margin:0 0 24px}.section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.section h3{color:#f4c878}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:14px 0}.section .btn{margin-top:9px}.button-row{flex-wrap:wrap}.category-rows{display:flex;flex-direction:column;gap:10px;margin-top:15px}.category-row{border:1px solid #36536b;border-radius:12px;padding:10px;background:#142c40;display:grid;grid-template-columns:1.2fr .9fr .75fr .75fr auto;gap:9px;align-items:end}.category-row .mini{font-size:10px;color:#9aafc1}.category-row .code{font-weight:900;color:#f6d28d}.inline-form{display:grid;grid-template-columns:100px 1fr 120px auto;gap:8px;margin-top:17px}.pin-coords{padding:12px;min-height:42px;border:1px solid #3b5466;border-radius:10px;color:#ffe2ad;font-size:12px}.feedback{font-size:12px;line-height:1.7;color:#a8f5ce}.feedback.error{color:#ffaeb8}.admin-feedback{margin-top:13px}.login{max-width:430px;padding:22px}.login h3{margin:0 0 6px}.login p{color:var(--muted);font-size:12px;line-height:1.65}.login form{display:flex;flex-direction:column;gap:10px}.login form button{margin-top:12px}.upload-label{cursor:pointer;display:inline-flex;margin-top:9px}.is-placing .map-canvas{cursor:crosshair}.is-placing #mapPins{pointer-events:none}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;border-top:1px solid #2b4257;margin-top:34px;padding:24px 0;color:#aabac7;font-size:11px}footer strong{color:var(--gold)}[hidden]{display:none!important}@media(max-width:980px){.public-layout,.hero,.admin-grid{grid-template-columns:1fr}.hero{padding-top:25px}.event-hero{min-height:auto}.admin-grid{gap:12px}}@media(max-width:640px){.shell{width:calc(100% - 24px)}.head-actions{gap:7px}.brand-icon{width:36px;height:36px;font-size:20px}.brand b{font-size:13px}.brand small{font-size:8px}.topbar .badge{display:none}.stats{grid-template-columns:repeat(2,1fr);gap:8px}.stat strong{font-size:26px}.hero h1{font-size:38px}.map-scroll{padding:5px}.lot-grid{grid-template-columns:repeat(4,1fr)}.category-row{grid-template-columns:repeat(2,minmax(0,1fr))}.category-row .btn{grid-column:span 2}.inline-form{grid-template-columns:1fr 1fr}.inline-form .btn{grid-column:span 2}.form-grid{grid-template-columns:1fr}.admin-head{align-items:start;flex-direction:column}.card-head{padding:13px}.list-pad,.admin .body{padding:12px}.detail{padding:12px}}

.category-headings{display:grid;grid-template-columns:1.2fr .9fr .75fr .75fr auto;gap:9px;color:#9aafc1;font-size:10px;font-weight:850;letter-spacing:.06em;margin-top:13px;padding:0 10px}.category-headings span:last-child{min-width:70px}@media(max-width:640px){.category-headings{display:none}}

/* V8 master layout editor */
.layout-editor-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:15px 0}
.layout-editor-bar>div{flex:1;min-width:180px}.layout-editor-bar>.btn{margin-top:0;min-height:42px}
.editor-wrap{background:#081724;border:1px solid #3d596b;border-radius:14px;padding:10px;overflow:auto;max-height:740px}
.editor-stage{position:relative;width:100%;max-width:1000px;margin:auto;line-height:0;overflow:visible;touch-action:pan-y;user-select:none;background:#203543;border-radius:5px}
.editor-stage>img{display:block;width:100%;height:auto;user-select:none;pointer-events:none;border-radius:5px}
.editor-overlay{position:absolute;inset:0;pointer-events:none}
.editor-rect{position:absolute;display:flex;align-items:center;justify-content:center;border:2px solid #faf4e2;box-shadow:0 1px 9px #000b;transform-origin:center center;border-radius:3px;font-size:clamp(8px,1.1vw,13px);font-weight:1000;text-shadow:0 1px 2px #000d;pointer-events:auto;cursor:grab;touch-action:none;color:white;line-height:1.05;outline:1px solid #0006;white-space:nowrap;min-width:10px;min-height:10px}
.editor-rect:active{cursor:grabbing}.editor-rect.selected{outline:3px solid #fff2a5;z-index:10;box-shadow:0 0 0 4px #ffd06655,0 3px 18px #000b}
.editor-rect.locked{cursor:not-allowed;opacity:.7;border-style:dashed}.editor-rect.available{background:#188452cf}.editor-rect.notready{background:#d3a53bcc}.editor-rect.blocked{background:#5d687dce}.editor-rect.sold{background:#b42b45e6}
.editor-rect .shape-label{pointer-events:none;overflow:hidden;text-overflow:ellipsis;max-width:100%;padding:2px}
.rect-handle{position:absolute;width:22px;height:22px;border:2px solid #202637;background:#ffe091;color:#141a21;border-radius:6px;display:grid;place-items:center;z-index:14;font-size:15px;line-height:1;touch-action:none;box-shadow:0 2px 7px #0009}
.rect-handle.resize{right:-12px;bottom:-12px;cursor:nwse-resize}.rect-handle.rotate{top:-35px;left:calc(50% - 11px);border-radius:50%;cursor:crosshair}
.editor-no-image{padding:30px;text-align:center;color:#bdc9d7}
.rect-help{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;color:#c9d5e1;font-size:11px}
.rect-help span{border:1px solid #425d72;padding:6px 10px;border-radius:100px}
.rect-fields{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:14px;align-items:end}
.rect-fields .btn{margin-top:0;width:100%;min-height:43px}.rect-fields label{font-size:11px;white-space:nowrap}
#rectFeedback{padding:10px 0 0;color:#d6c39f}
.map-pin.rect-map-pin{display:flex;align-items:center;justify-content:center;padding:0;min-width:0;border-radius:3px;overflow:hidden;font-size:clamp(7px,1vw,11px);white-space:nowrap}
@media(max-width:760px){.rect-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.editor-rect{border-width:1px}.rect-handle{width:18px;height:18px}.rect-handle.rotate{top:-29px;left:calc(50% - 9px)}.layout-editor-bar{gap:6px}.layout-editor-bar .btn{padding:10px 9px}}

/* V9 auto layout bulk placer */
.bulk-panel{margin:17px 0 24px;border:1px solid #456d83;border-radius:17px;padding:18px;background:linear-gradient(130deg,#122f41,#0e2030 70%);color:#f5f8fb}
.bulk-top{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:13px}
.bulk-kicker{font-size:11px;font-weight:900;letter-spacing:1.5px;color:#95edcb}
.bulk-top h4{font-size:20px;margin:6px 0 5px}
.bulk-top p{color:#bbd0dd;font-size:13px;margin:0}
.bulk-tag{white-space:nowrap;border:1px solid #4f7e81;color:#a6efd1;border-radius:20px;padding:8px;font-size:10px;font-weight:800}
.bulk-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:13px 0}
.bulk-fields>div{min-width:0}
.bulk-fields label{display:block;font-size:11px;color:#b9d2e0;margin-bottom:5px}
.bulk-fields select,.bulk-fields input{width:100%;max-width:100%;background:#102b3d;color:#f5faff;border:1px solid #638096;border-radius:8px;padding:10px;min-height:42px}
.bulk-check{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:12px;margin:10px 0;color:#e3eff7;cursor:pointer}
.bulk-check input{accent-color:#39d5aa;width:17px;height:17px}
.bulk-check small{font-size:11px;color:#a0b8cb}
.bulk-actions{margin-top:13px;gap:8px}
.bulk-actions .btn{min-height:40px}
.bulk-hint{margin-top:12px;border:1px solid #41667c;padding:12px;border-radius:10px;background:#102436;color:#e1f3ff;font-size:12px;line-height:1.55}
.bulk-hint.ready{border-color:#2ea98c;background:#133b38}
.bulk-hint.error{border-color:#d58979;background:#4a282f}
.editor-stage.bulk-picking{cursor:crosshair;touch-action:manipulation}
.bulk-overlay{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:20}
.bulk-ghost{position:absolute;display:flex;align-items:center;justify-content:center;border:2px dashed #b1fff2;box-shadow:0 0 0 2px #022a36,0 3px 10px #0009;border-radius:3px;background:#00b9a27a;color:#fff;text-shadow:0 2px 2px #022;font-size:clamp(8px,1.05vw,13px);font-weight:900;white-space:nowrap;line-height:1;transform-origin:center center}
.bulk-anchor{position:absolute;border:2px solid #fff8bd;background:#f0b84b;color:#18293b;font-size:11px;font-weight:900;padding:5px 9px;box-shadow:0 3px 8px #0009;border-radius:50px;white-space:nowrap;transform:translate(-50%,-50%);z-index:2}
.bulk-guide{position:absolute;height:2px;background:#c1fff1aa;transform-origin:left center;pointer-events:none}
@media(max-width:980px){.bulk-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.bulk-panel{padding:12px}.bulk-tag{display:none}.bulk-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.bulk-top h4{font-size:18px}.bulk-actions .btn{flex:1 1 45%;font-size:12px;padding:8px 6px}}
