@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css";
:root{--bg:#120f0d;--panel:#181614;--panel-strong:#211d1a;--line:#ffffff1f;--text:#f6f0e8;--muted:#b8aaa0;--accent:#ff8935;--danger:#ff5d5d;--toolbar-height:112px}*{box-sizing:border-box}html,body{background:var(--bg);width:100%;min-height:100%;color:var(--text);margin:0;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button,input{font:inherit}button{color:inherit}.draw-shell,.display-shell,.admin-shell{background:radial-gradient(circle at 18% 0,#4fd1c51f,#0000 30%),linear-gradient(#171311 0%,#0f0d0c 100%);width:100vw;min-height:100dvh;overflow:hidden}.draw-shell{grid-template-rows:minmax(0, 1fr) var(--toolbar-height);display:grid}.display-shell{position:relative}.admin-shell{grid-template-rows:auto auto minmax(0,1fr);gap:14px;padding:22px;display:grid}.wall-stage{place-items:center;width:100%;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.wall-stage-draw{height:calc(100dvh - var(--toolbar-height));padding:14px}.wall-stage-display{width:100vw;height:100dvh;padding:0}.wall-stage-admin{border:1px solid var(--line);background:#0d0b0a;height:100%;min-height:480px}.wall-surface{isolation:isolate;background-color:#9a8878;border:1px solid #ffffff24;width:min(100%,225dvh);height:min(100%,44.4444vw);position:relative;overflow:hidden;box-shadow:inset 0 18px 40px #ffffff0f,inset 0 -32px 64px #00000047,0 28px 80px #0000006b}.wall-stage-draw .wall-surface{width:min(100%, calc((100dvh - var(--toolbar-height) - 28px) * 2.25));border-radius:8px;height:min(100%,44.4444vw - 12.4444px)}.wall-stage-display .wall-surface{width:min(100vw,225dvh);height:min(100dvh,44.4444vw);box-shadow:none;border:0}.wall-stage-admin .wall-surface{border-radius:6px;width:min(100%,175dvh);height:min(100%,44.4444vw)}.brick-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lighting-canvas{z-index:2;pointer-events:none;mix-blend-mode:multiply;width:100%;height:100%;position:absolute;inset:0}.wall-surface:after{z-index:3;pointer-events:none;content:"";background:linear-gradient(90deg,#ffffff0d,#0000 18% 80%,#00000029),linear-gradient(#ffffff0f,#0000 25%,#00000042);position:absolute;inset:0}.spray-canvas{z-index:1;touch-action:none;cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.wall-stage-display .spray-canvas,.wall-stage-admin .spray-canvas,.wall-stage-preview .spray-canvas{cursor:default}.wall-stage-preview{width:100%;height:auto;padding:0;display:block}.wall-stage-preview .wall-surface{aspect-ratio:4320/1920;box-shadow:none;border:2px dashed #ffffff59;border-radius:0;width:100%!important;height:auto!important}.air-wall-preview{z-index:0;border-radius:inherit;pointer-events:none;background:#9a8878;position:absolute;inset:0;overflow:hidden}.air-wall-viewport{will-change:transform;height:auto;position:absolute;top:0;left:0}.paint-toolbar{min-width:0;height:var(--toolbar-height);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#141210f0;grid-template-columns:auto minmax(220px,1fr) minmax(220px,auto) auto;align-items:center;gap:12px;padding:16px 20px;display:grid;box-shadow:0 -18px 42px #00000047}.toolbar-group,.toolbar-status,.admin-stats,.admin-actions,.pin-field{align-items:center;display:flex}.toolbar-group{gap:8px;min-width:0}.color-group{flex-wrap:wrap}.size-group{justify-content:flex-end}.icon-button,.swatch,.color-picker,.danger-button{border:1px solid var(--line);background:var(--panel);height:44px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:border-color .14s,background .14s,transform .14s;display:inline-flex}.icon-button{width:44px}.icon-button:hover,.color-picker:hover{background:var(--panel-strong);border-color:#0000008f}.icon-button:active,.swatch:active,.danger-button:active{transform:translateY(1px)}.icon-button.is-active,.swatch.is-active{border-color:var(--text);box-shadow:0 0 0 2px #0003}.swatch{border-color:#ffffff3d;width:34px;height:34px}.color-picker{width:44px;position:relative;overflow:hidden}.color-picker input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;position:absolute;inset:0}.size-slider{accent-color:#ff8935;width:180px}.brush-preview{border:1px solid var(--line);background:var(--panel);border-radius:8px;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.brush-preview:before{width:min(var(--brush-size), 30px);height:min(var(--brush-size), 30px);background:var(--text);content:"";border-radius:999px}.toolbar-status{min-width:150px;color:var(--muted);white-space:nowrap;justify-content:flex-end;gap:9px;font-size:13px}.status-dot{background:#6b7280;border-radius:999px;width:9px;height:9px;box-shadow:0 0 0 4px #6b72801f}.status-dot.is-online{background:#34d399;box-shadow:0 0 0 4px #34d39924}.wall-hud{z-index:5;color:#ffffffd1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0b0a099e;border:1px solid #ffffff1f;border-radius:8px;align-items:center;gap:12px;max-width:calc(100vw - 44px);padding:10px 12px;font-size:13px;display:flex;position:absolute;bottom:20px;right:22px}.admin-header{justify-content:space-between;align-items:center;gap:20px;display:flex}.admin-header h1,.admin-header p{margin:0}.admin-header h1{font-size:32px;line-height:1.05}.eyebrow{color:#000;letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:700}.admin-stats{color:var(--muted);gap:12px;font-size:14px}.admin-actions{gap:10px;min-width:0}.pin-field{border:1px solid var(--line);background:var(--panel);min-width:230px;height:44px;color:var(--muted);border-radius:8px;gap:8px;padding:0 12px}.pin-field input{width:150px;color:var(--text);background:0 0;border:0;outline:0}.danger-button{color:#ffd4d4;background:#ff5d5d1a;border-color:#ff5d5d6b;gap:8px;padding:0 16px}.danger-button:hover{background:#ff5d5d2e;border-color:#ff5d5db8}.admin-message{color:var(--muted);font-size:14px}@media (max-width:1080px){:root{--toolbar-height:164px}.paint-toolbar{grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-content:center;padding:12px}.toolbar-status,.size-group{justify-content:flex-start}}@media (max-width:680px){.wall-hud{flex-wrap:wrap;bottom:12px;right:12px}.admin-shell{padding:14px}.admin-header,.admin-actions{flex-direction:column;align-items:flex-start}}.draw-shell--mobile{display:block;position:relative}.draw-shell--mobile .wall-stage-draw{height:100dvh;padding:0}.draw-shell--mobile .wall-stage-draw .wall-surface{box-shadow:none;border:0;border-radius:0}.mobile-toolbar{z-index:30;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--line);opacity:0;pointer-events:none;background:#0d0b0aeb;flex-direction:column;gap:10px;padding:14px 14px 10px;transition:transform .22s cubic-bezier(.32,0,.24,1),opacity .18s;display:flex;transform:translateY(100%)}.mobile-toolbar.is-open .mobile-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.mobile-color-row{align-items:center;gap:5px;display:flex}.mobile-swatch{cursor:pointer;border:2px solid #0000;border-radius:8px;flex:1;min-width:0;height:34px;transition:border-color .12s,transform 80ms}.mobile-swatch.is-active{border-color:#fff;transform:scaleY(1.08)}.mobile-swatch--picker{background:var(--panel);border-color:var(--line);color:var(--muted);flex:0 0 36px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.mobile-swatch--picker input{opacity:0;cursor:pointer;position:absolute;inset:0}.mobile-size-row{align-items:center;gap:8px;display:flex}.mobile-size-row .size-slider{flex:1}.mobile-bar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--line);background:#0d0b0ae0;justify-content:space-between;align-items:center;height:56px;padding:0 12px;display:flex}.mobile-color-dot{border:2px solid #ffffff38;border-radius:999px;flex-shrink:0;width:22px;height:22px;display:inline-block}@media (max-width:680px){.color-group{gap:7px}.size-slider{flex:1;width:auto}}.air-shell{color:#1c1816;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;--text:#1c1816;--muted:#7a6e67;--panel:#ffffffd1;--panel-strong:#fffffff5;--line:#0000001a;background:#1a1510;width:100vw;height:100dvh;position:relative;overflow:hidden}.air-header{z-index:10;pointer-events:none;align-items:center;gap:12px;display:flex;position:absolute;top:16px;left:16px}.air-motion-overlay{z-index:60;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#090807c7;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.air-motion-sheet{background:#fff;border:1px solid #ffffff1a;border-radius:20px;flex-direction:column;gap:20px;width:min(340px,100%);padding:10px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 32px 64px #0009}.air-intro-title{text-align:center;text-transform:uppercase;color:#000;margin:0;padding-top:10px;font-size:20px;font-style:italic;font-weight:800}.air-intro-steps{justify-content:space-around;align-items:center;display:flex}.air-intro-step{color:#000000d1;flex:1;justify-content:center;align-items:center;display:flex}.air-intro-step svg{width:60px;height:60px}.air-notification{color:#ff8935;text-align:center;margin:0;padding:0;font-size:13px}.air-start-btn{color:#fff;letter-spacing:.03em;cursor:pointer;background:#ff8935;border:none;border-radius:12px;width:100%;height:52px;font-size:16px;font-weight:700;transition:background .12s,transform 80ms;display:block}.air-start-btn:hover{background:#ff8935}.air-start-btn:active{transform:translateY(1px)}.air-motion-warning{color:#ffb2b7;text-align:center;margin:0;font-size:13px}.air-header-title{letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;color:#ffffffe6;text-shadow:0 1px 6px #000000b3;margin:0;font-size:13px;font-weight:700;overflow:hidden}.air-painter-name{font-style:italic}.air-header-right{align-items:center;gap:8px;display:flex}.air-status{align-items:center;gap:5px;display:inline-flex}.air-status-text{color:var(--muted);white-space:nowrap;font-size:11px}.air-overlay{z-index:10;pointer-events:none;grid-template-rows:auto auto;grid-template-columns:repeat(8,1fr);align-content:end;align-items:end;gap:30px 8px;padding:16px;display:grid;position:absolute;inset:0}.air-toggle-left{pointer-events:auto;grid-area:1/1;place-self:end start}.air-bottom-center{align-items:left;pointer-events:auto;grid-area:1/2/auto/8;justify-content:stretch;min-height:44px;display:flex}.air-toggle-right{pointer-events:auto;grid-area:1/8;place-self:end}.air-bottom-left{pointer-events:auto;grid-area:2/1/auto/3;justify-self:start;align-items:center;gap:8px;display:flex}.air-bottom-right{align-items:left;pointer-events:auto;grid-area:2/7/auto/9;justify-self:end;display:flex}.air-color-row{-webkit-overflow-scrolling:touch;scrollbar-width:none;-webkit-backdrop-filter:blur(24px)saturate(1.4);transform-origin:100%;background:#ffffff47;border:1px solid #ffffff80;border-radius:999px;flex-wrap:nowrap;align-items:center;gap:6px;width:100%;height:44px;padding:0 10px;animation:.22s cubic-bezier(.22,.61,.36,1) both unfold;display:flex;overflow-x:auto;box-shadow:0 4px 18px #00000024}.air-color-row::-webkit-scrollbar{display:none}.air-cap-swatch{background-color:var(--cap-color);cursor:pointer;border:2px solid #0000001a;border-radius:999px;flex-shrink:0;width:28px;height:28px;transition:transform .12s,box-shadow .12s;box-shadow:0 1px 4px #00000024}.air-cap-swatch.is-active{box-shadow:0 0 0 2.5px #fff,0 0 0 4.5px #00000038}.air-custom-swatch{cursor:pointer;background:conic-gradient(#ef4444,#facc15,#22c55e,#3b82f6,#a855f7,#ec4899,#ef4444);border-radius:999px;flex-shrink:0;width:28px;height:28px;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden;box-shadow:0 1px 4px #00000024}.air-custom-swatch.is-active{box-shadow:0 0 0 2.5px #fff,0 0 0 4.5px #00000038}.air-custom-swatch input[type=color]{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.air-size-label{color:#7a6e67;text-align:right;min-width:36px;font-size:12px}.air-size-slider{-webkit-backdrop-filter:blur(24px)saturate(1.4);cursor:pointer;touch-action:none;transform-origin:0;background:#ffffff47;border:1px solid #ffffff80;border-radius:999px;width:100%;height:44px;animation:.22s cubic-bezier(.22,.61,.36,1) both unfold;position:relative;overflow:hidden;box-shadow:0 4px 18px #00000024}.air-size-inner{position:absolute;inset:5px 12px}.air-size-track{clip-path:polygon(0% 50%,100% 0%,100% 100%);background:#ffb49629;position:absolute;inset:0;overflow:hidden}.air-size-fill{background:#ff89354d;position:absolute;top:0;bottom:0;left:0}.air-size-thumb{pointer-events:none;background:#ff8935;border-radius:1px;width:2px;position:absolute;top:0;bottom:0;transform:translate(-50%);box-shadow:0 0 6px #ff893566}@keyframes unfold{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}.air-surface{touch-action:none;cursor:crosshair;background:#9a8878;border:none;border-radius:0;position:absolute;inset:0;overflow:hidden}.air-surface--sensor{cursor:pointer;background:0 0;padding:0}.air-surface--sensor>.air-scene-layer{position:absolute;inset:0}.air-surface--sensor canvas{display:block;width:100%!important;height:100%!important}.air-shell .icon-button{-webkit-backdrop-filter:blur(24px)saturate(1.4);color:#1c1816;background:#ffffff47;border-color:#ffffff80;box-shadow:0 4px 18px #00000024}.air-shell .icon-button:hover{background:#ffffff6b;border-color:#ffffffa6}.air-shell .icon-button.is-active{color:#c45e08;box-shadow:none;background:#ff893538;border-color:#ff89358c}.air-can-wrap{pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;display:flex;position:relative}.air-can-cloud{pointer-events:none;opacity:.18;height:52%;transition:opacity .2s;position:absolute;top:0;left:0;right:0}.air-can-wrap.is-spraying .air-can-cloud{opacity:1;animation:.7s ease-in-out infinite alternate cloud-pulse}@keyframes cloud-pulse{0%{opacity:.75}to{opacity:1}}.air-can-svg{z-index:1;filter:drop-shadow(0 6px 14px #0000002e);width:auto;height:62%;max-height:220px;position:relative}.air-center-cursor{z-index:5;border:2px solid var(--accent);pointer-events:none;border-radius:999px;transition:width .1s,height .1s,box-shadow .12s,border-color .12s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.air-center-cursor:before,.air-center-cursor:after{content:"";opacity:.5;background:currentColor;position:absolute}.air-center-cursor.is-spraying{animation:.5s ease-in-out infinite alternate center-cursor-pulse}@keyframes center-cursor-pulse{0%{transform:translate(-50%,-50%)scale(1)}to{opacity:.7;transform:translate(-50%,-50%)scale(1.4)}}.air-indicator{border:2px solid var(--accent);pointer-events:none;border-radius:999px;width:20px;height:20px;transition:box-shadow .12s;position:absolute;transform:translate(-50%,-50%)}.air-indicator.is-spraying{animation:.5s ease-in-out infinite alternate indicator-pulse}@keyframes indicator-pulse{0%{transform:translate(-50%,-50%)scale(1)}to{opacity:.7;transform:translate(-50%,-50%)scale(1.6)}}.air-spray-button{color:#4fd1c5b3;cursor:pointer;background:#4fd1c51a;border:1px solid #4fd1c559;border-radius:14px;justify-content:center;align-items:center;height:56px;transition:background .1s,border-color .1s,color .1s,transform 80ms;display:flex}.air-spray-button:active,.air-spray-button.is-spraying{color:#dbfff8;background:#4fd1c538;border-color:#4fd1c5e6;transform:scale(.97);box-shadow:0 0 20px #4fd1c533}.remote-cursor{z-index:10;pointer-events:none;border:2px solid;border-radius:999px;width:20px;height:20px;transition:left 50ms linear,top 50ms linear;position:absolute;transform:translate(-50%,-50%)}.remote-cursor.is-spraying{animation:.6s ease-in-out infinite alternate cursor-pulse}.remote-cursor__label{white-space:nowrap;letter-spacing:.02em;text-shadow:0 1px 4px #000000e6,0 0 8px #000000b3;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:700;position:absolute;top:-22px;left:50%;transform:translate(-50%)}@keyframes cursor-pulse{0%{transform:translate(-50%,-50%)scale(1)}to{transform:translate(-50%,-50%)scale(1.5)}}
