@font-face{font-family:'IBM Plex Sans Thai';src:url('assets/fonts/IBMPlexSansThai-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:block}
@font-face{font-family:'IBM Plex Sans Thai';src:url('assets/fonts/IBMPlexSansThai-Medium.ttf') format('truetype');font-weight:500;font-style:normal;font-display:block}
@font-face{font-family:'IBM Plex Sans Thai';src:url('assets/fonts/IBMPlexSansThai-SemiBold.ttf') format('truetype');font-weight:600;font-style:normal;font-display:block}
@font-face{font-family:'IBM Plex Sans Thai';src:url('assets/fonts/IBMPlexSansThai-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:block}
@font-face{font-family:'Poppins';src:url('assets/fonts/Poppins-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:block}
@font-face{font-family:'Poppins';src:url('assets/fonts/Poppins-Medium.ttf') format('truetype');font-weight:500;font-style:normal;font-display:block}
@font-face{font-family:'Poppins';src:url('assets/fonts/Poppins-SemiBold.ttf') format('truetype');font-weight:600;font-style:normal;font-display:block}
@font-face{font-family:'Poppins';src:url('assets/fonts/Poppins-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:block}

:root{
  --navy:#002554; --gold:#FFC600; --ink:#0b1220; --panel:#0d1726; --panel2:#132033;
  --line:#1e2f48; --muted:#7f94b0; --bg:#060d18;
  --ui:'IBM Plex Sans Thai',system-ui,sans-serif;
  --control-h:26px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:#e8eef8;font-family:var(--ui);font-size:12px;overflow:hidden}
button,select,input,textarea{font-family:inherit;font-size:12px}
button{cursor:pointer}
button:disabled{opacity:.4;cursor:not-allowed}
[hidden]{display:none!important}

.app{display:grid;grid-template-columns:200px 1fr 240px;grid-template-rows:36px 1fr;height:100vh;height:100dvh;min-height:0}
.app.left-collapsed{grid-template-columns:0 1fr 240px}
.app.right-collapsed{grid-template-columns:200px 1fr 0}
.app.left-collapsed.right-collapsed{grid-template-columns:0 1fr 0}
.app.left-collapsed .leftbar,.app.right-collapsed .side{display:none}

.topbar{grid-column:1/-1;display:flex;align-items:center;gap:4px;padding:0 6px;background:var(--panel);border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden;min-height:36px;height:36px;flex-wrap:nowrap}
.brand{font-weight:700;font-size:12px;white-space:nowrap;margin-right:4px;line-height:1;flex:0 0 auto}
.brand span{color:var(--gold)}
.sep{width:1px;height:16px;background:var(--line);margin:0 2px;flex:0 0 auto}
.grow{flex:1;min-width:4px}
.ib{border:1px solid var(--line);background:var(--panel2);color:#e8eef8;border-radius:5px;padding:3px 6px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.15;min-height:var(--control-h);height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.ib:hover:not(:disabled){border-color:#3a557a;background:#182a42}
.ib:active:not(:disabled){transform:translateY(0.5px);background:#0f1c2e}
.ib:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.ib.primary{background:var(--navy);border-color:#1a4a8a}
.ib.primary:hover:not(:disabled){background:#00336e}
.ib.gold{background:var(--gold);color:#002554;border-color:#e0ad00}
.ib.gold:hover:not(:disabled){background:#ffd133}
.ib.ghost{background:transparent}
.sel{background:var(--panel2);color:#e8eef8;border:1px solid var(--line);border-radius:5px;padding:2px 4px;font-size:11px;max-width:148px;height:var(--control-h);line-height:1.15;flex:0 0 auto}
.sel:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.chk{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--muted);white-space:nowrap;flex:0 0 auto}
.chk input{margin:0}
.status{font-size:10px;color:var(--muted);margin-left:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}

.leftbar,.side{background:var(--panel);overflow:auto;padding:6px;display:flex;flex-direction:column;gap:6px;min-height:0}
.leftbar{border-right:1px solid var(--line)}
.side{border-left:1px solid var(--line)}
.tabs{display:flex;gap:3px;flex:0 0 auto}
.tab{flex:1;padding:4px 3px;border-radius:5px;border:1px solid var(--line);background:var(--panel2);font-size:10px;font-weight:700;color:var(--muted);min-height:24px;line-height:1.2}
.tab:hover{color:#fff;border-color:#3a557a}
.tab.on{color:#fff;border-color:var(--gold);background:#14233a}
.tab:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.pane{display:flex;flex-direction:column;gap:6px;min-height:0}
.card{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px}
.card-h,.sub{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:2px 0}
.row{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.row.tight{gap:3px}
.lab{font-size:10px;color:var(--muted);min-width:42px;flex:0 0 auto}
.fld{background:#0c1829;color:#fff;border:1px solid var(--line);border-radius:5px;padding:3px 6px;height:var(--control-h)}
.fld:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.rng{flex:1;min-width:60px;accent-color:var(--gold)}
.val{font-size:10px;color:var(--muted);min-width:36px;text-align:right}
.hint{font-size:10px;color:var(--muted);line-height:1.4}
.dropzone{border:1px dashed #3a557a;border-radius:8px;padding:8px;text-align:center;font-size:10px;color:var(--muted);background:#0c1829}
.dropzone.over{border-color:var(--gold);color:#fff}
.thumb-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.thumb{aspect-ratio:1;border-radius:6px;border:1px solid var(--line);background:#0c1829 center/cover no-repeat;cursor:pointer;position:relative;overflow:hidden}
.thumb:hover{border-color:#3a557a}
.thumb.on{border-color:var(--gold)}
.thumb .cap{position:absolute;left:0;right:0;bottom:0;padding:2px 3px;font-size:8px;background:rgba(0,0,0,.55);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kit-item{display:flex;align-items:center;gap:6px;padding:4px;border-radius:6px;border:1px solid transparent;background:#0c1829;cursor:pointer;font-size:10px;margin-bottom:3px}
.kit-item:hover,.kit-item.on{border-color:var(--gold)}
.kit-item img,.kit-item .ico{width:28px;height:28px;object-fit:contain;background:#07111f;border-radius:4px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--gold)}
.swatches{display:flex;gap:4px;flex-wrap:wrap}
.swatch{width:22px;height:22px;border-radius:4px;border:1px solid #3a557a;cursor:pointer}
.swatch:hover{outline:2px solid var(--gold);outline-offset:1px}
.layers{display:flex;flex-direction:column;gap:2px;max-height:34vh;overflow:auto}
.layer-row{display:grid;grid-template-columns:18px 18px minmax(0,1fr) 14px;gap:2px;align-items:center;padding:3px 4px;border-radius:5px;background:#0c1829;cursor:grab;font-size:10px;user-select:none;min-height:22px}
.layer-row.active{outline:1px solid var(--gold)}
.layer-row .eye,.layer-row .lock{border:0;background:transparent;color:var(--muted);padding:0;margin:0;font-size:12px;line-height:1;cursor:pointer;min-height:18px;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}
.layer-row .eye.on,.layer-row .lock.on{color:var(--gold)}
.layer-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-row .handle-grip{color:var(--muted);font-size:10px;line-height:1;text-align:center;cursor:grab;opacity:.7}
.layer-row.drag-over{outline:1px dashed var(--gold)}
.layer-actions .ib{min-width:0;padding:3px 5px;font-size:10px}
.empty-props{padding:10px 4px 6px}
.empty-title{font-size:11px;font-weight:700;color:#c5d3e6;margin-bottom:2px}
.empty-hint{font-size:10px;color:var(--muted);line-height:1.35}
.chk.block{display:flex;width:100%;padding:3px 0;font-size:11px;color:#c5d3e6}
.brand-note{display:flex;align-items:center;gap:6px;padding:6px 8px}
.brand-swatch{width:12px;height:12px;border-radius:3px;border:1px solid #3a557a;flex:0 0 auto}
.brand-note .hint{margin:0;font-size:9px}
.thumb .cap{font-size:9px;padding:3px 4px;letter-spacing:.01em}
.pitch-list{display:flex;flex-direction:column;gap:3px;max-height:160px;overflow:auto}
.pitch-btn{text-align:left;border:1px solid var(--line);background:#0c1829;color:#e8eef8;border-radius:6px;padding:5px 6px;font-size:10px;line-height:1.35;cursor:pointer}
.pitch-btn:hover,.pitch-btn.on{border-color:var(--gold)}

.stage-wrap{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:8px;background:
  radial-gradient(circle at 20% 0%, #132744 0%, transparent 45%),
  linear-gradient(180deg,#081425,#050d18);min-height:0}
.stage-wrap.file-over{outline:2px dashed var(--gold);outline-offset:-6px}
.stage-fit{position:relative;flex:0 0 auto;overflow:visible;line-height:0}
.stage-scaler{transform-origin:0 0;position:absolute;top:0;left:0;will-change:transform}
.stage{position:relative;background:#002554;overflow:visible;box-shadow:0 12px 40px rgba(0,0,0,.55);user-select:none;touch-action:none}
.stage:focus{outline:none}
.stage:focus-visible{outline:2px solid rgba(255,198,0,.35);outline-offset:4px}
.stage.exporting{overflow:hidden!important}
.stage.exporting .layer-ui,.stage.exporting .guides,.stage.exporting .safe-area{display:none!important}
.bg{position:absolute;inset:0;background:#002554 center/cover no-repeat;z-index:0}
.guides{position:absolute;inset:0;pointer-events:none;z-index:9998}
.guides .g{position:absolute;background:rgba(255,198,0,.75)}
.guides .gv{top:0;bottom:0;width:1px}
.guides .gh{left:0;right:0;height:1px}
.safe-area{position:absolute;pointer-events:none;z-index:9997;border:1px dashed rgba(255,255,255,.28);box-sizing:border-box}

.layer{position:absolute;z-index:1;outline:none}
.layer.selected{z-index:9000}
.layer .content{width:100%;height:100%;overflow:visible}
.layer.text .content{font-family:'IBM Plex Sans Thai',sans-serif;color:#fff;line-height:1.25;white-space:pre-wrap;word-break:break-word;padding:.08em .05em .22em}
.layer.text .content[contenteditable="true"]{cursor:text;outline:2px solid rgba(255,198,0,.55);outline-offset:2px;border-radius:4px}
.layer.image img,.layer.image object,.layer.image svg,.layer.qr img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.layer.shape .content{width:100%;height:100%}
.layer .gold{color:#FFC600}
.layer.text .content .gold{white-space:nowrap}
.layer-ui{position:absolute;inset:0;pointer-events:none}
.layer.selected .layer-ui{outline:1.5px solid rgba(255,198,0,.9);outline-offset:2px}
.layer .handle{position:absolute;width:14px;height:14px;background:#FFC600;border:2px solid #002554;border-radius:2px;pointer-events:auto;touch-action:none;display:none;z-index:5}
.layer.selected .handle{display:block}
.layer .handle.br{right:0;bottom:0;cursor:nwse-resize}
.layer .handle.bl{left:0;bottom:0;cursor:nesw-resize}
.layer .handle.tr{right:0;top:0;cursor:nesw-resize}
.layer .handle.tl{left:0;top:0;cursor:nwse-resize}
.layer .handle.rot{left:50%;top:-18px;transform:translateX(-50%);border-radius:50%;cursor:grab;width:14px;height:14px}

.toast{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);background:rgba(0,37,84,.95);color:#fff;padding:8px 12px;border-radius:8px;font-size:11px;z-index:99999;border:1px solid #1a4a8a}
.toast.show{display:block!important}
.qr-pop{position:fixed;left:50%;top:48px;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;display:flex;gap:6px;z-index:100000;box-shadow:0 12px 40px rgba(0,0,0,.5);align-items:center}
.qr-pop .fld{min-width:220px}

@media (max-width:900px){
  .app,.app.left-collapsed,.app.right-collapsed,.app.left-collapsed.right-collapsed{
    grid-template-columns:1fr;grid-template-rows:36px 1fr auto auto;
  }
  .leftbar,.side{display:flex!important;max-height:28vh;border:0;border-top:1px solid var(--line)}
  .leftbar{order:3}.side{order:4}.stage-wrap{order:2}
  .topbar .brand{display:none}
  .lab{min-width:36px}
}
