@font-face{font-family:Mona Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/panel/assets/mona-sans-vietnamese-400-normal-Bnau2CLm.woff2)format("woff2"),url(/panel/assets/mona-sans-vietnamese-400-normal-CqhFJi2d.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Mona Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/panel/assets/mona-sans-latin-ext-400-normal-BwhSUGox.woff2)format("woff2"),url(/panel/assets/mona-sans-latin-ext-400-normal-CDNMqcO0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Mona Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/panel/assets/mona-sans-latin-400-normal-CwTt76Nb.woff2)format("woff2"),url(/panel/assets/mona-sans-latin-400-normal-DbL9V62D.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--field:#faf9f5;--surface:#f3f1e7;--bg:#ece9da;--sunken:#dfdbc8;--line:#c9c5b6;--line-strong:#8a8574;--text:#272727;--muted:#5f5b4e;--accent:#2e6048;--on-accent:#ece9da;--accent-ink:#2e6048;--ok:#2e6048;--warn:#855400;--error:#b3261e;--radius:8px;--icon-alert:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 7v6'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");--fs-xs:.8125rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.125rem;--fs-xl:1.25rem;--fs-2xl:1.75rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;letter-spacing:.01em;font-synthesis:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:Mona Sans,Helvetica Neue,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);min-height:100dvh;margin:0}h1,h2,h3,strong,b,summary,dt,th{font-weight:400}a{color:var(--text);text-underline-offset:3px;text-decoration-thickness:1px}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:720px;padding:0 20px calc(40px + env(safe-area-inset-bottom));margin:0 auto}.topbar{z-index:10;min-height:56px;padding:calc(12px + env(safe-area-inset-top)) 0 12px;background:var(--bg);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;text-decoration:none;display:flex}.logo{width:auto;height:20px;color:var(--text);display:block}h1{font-size:var(--fs-2xl);letter-spacing:-.01em;margin:24px 0 12px;line-height:1.15}h2{font-size:var(--fs-xl);margin:0 0 12px;line-height:1.3}h3{font-size:var(--fs-md);margin:20px 0 8px;line-height:1.4}.card{background:var(--surface);border-radius:var(--radius);color:inherit;border:1px solid #d9d5c5;margin:12px 0;padding:20px;text-decoration:none;display:block}a.card{transition:border-color .12s}a.card:hover{border-color:var(--line-strong)}.center{place-items:center;min-height:100dvh;display:grid}.muted{color:var(--muted)}.small{font-size:var(--fs-sm)}.hint{color:var(--muted);font-size:var(--fs-sm);margin-top:8px;line-height:1.45;display:block}.error{color:var(--error)}.error:before,.badge-error:before{content:"";vertical-align:-.17em;width:1.05em;height:1.05em;-webkit-mask:var(--icon-alert) center / contain no-repeat;-webkit-mask:var(--icon-alert) center / contain no-repeat;mask:var(--icon-alert) center / contain no-repeat;background:currentColor;flex:none;margin-right:.45em;display:inline-block}.warning{color:var(--warn);margin:4px 0}.ok{color:var(--ok)}.pre{white-space:pre-wrap;word-break:break-word}.row{align-items:center;display:flex}.row.between{justify-content:space-between;gap:12px}.row.gap{gap:10px}.row.wrap{flex-wrap:wrap}button,.button{border-radius:var(--radius);border:1px solid var(--text);min-height:48px;color:var(--text);font:inherit;font-size:var(--fs-md);letter-spacing:inherit;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-weight:400;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}button:hover:not(:disabled),.button:hover{background:#2727270f}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}button.primary:hover:not(:disabled),.button.primary:hover{background:var(--accent);background:color-mix(in srgb, var(--accent) 86%, #272727)}button:disabled{opacity:.45;cursor:default}button.link{min-height:auto;color:var(--muted);text-underline-offset:3px;background:0 0;border:none;padding:4px 0;text-decoration:underline;text-decoration-thickness:1px}button.link:hover:not(:disabled){color:var(--text);background:0 0}button.danger,.danger,button.link.danger:hover:not(:disabled){color:var(--error)}label{margin:16px 0;display:block}[hidden]{display:none!important}input,textarea{border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--field);width:100%;color:var(--text);font:inherit;font-size:var(--fs-md);letter-spacing:inherit;margin-top:8px;padding:12px 14px;font-weight:400;display:block}input::placeholder,textarea::placeholder{color:#85806e}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}input[aria-invalid=true]{border-color:var(--error)}textarea{resize:vertical;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem}.login{text-align:center;width:calc(100% - 40px);max-width:400px;margin:12vh auto 0;padding:32px 24px 24px}.login-logo{margin:0 0 12px}.login-logo .logo{height:32px;margin:0 auto}.login label{text-align:left}.login button{width:100%;margin-top:8px}.badge{max-width:100%;min-height:24px;font-size:var(--fs-xs);letter-spacing:.02em;background:var(--sunken);color:var(--text);border-radius:12px;align-items:center;padding:2px 10px;line-height:1.4;display:inline-flex}.badge-queued,.badge-processing{background:var(--sunken);background:color-mix(in srgb, var(--accent) 14%, var(--bg));color:var(--accent-ink)}.badge-ready{background:var(--text);color:var(--bg)}.badge-error{color:var(--error);background:#f1d9d3}.badge-published,.badge-client-done{box-shadow:inset 0 0 0 1px var(--text);background:0 0}.badge-client-new{background:var(--accent);color:var(--on-accent)}.job-list{margin:0;padding:0;list-style:none}.job-card{align-items:center;gap:16px;padding:12px;display:flex}.thumb{object-fit:cover;background:var(--sunken);border-radius:6px;flex-shrink:0;width:104px;height:72px}.job-info{flex-direction:column;gap:6px;min-width:0;display:flex}.job-info strong{font-size:var(--fs-lg);text-overflow:ellipsis;white-space:nowrap;line-height:1.3;overflow:hidden}.job-info .muted{font-size:var(--fs-sm)}.empty{text-align:center}.list-head{margin:20px 0 16px}.tabs{background:var(--sunken);border-radius:10px;flex:1;gap:4px;max-width:320px;padding:4px;display:flex}.tabs a{min-height:40px;color:var(--muted);border-radius:7px;flex:1;justify-content:center;align-items:center;gap:6px;text-decoration:none;display:flex}.tabs a.active{background:var(--field);color:var(--text);box-shadow:0 1px 2px #2727271a}.tabs .count{font-size:var(--fs-xs);color:var(--muted)}.back{color:var(--muted);font-size:var(--fs-sm);margin-top:16px;text-decoration:none;display:inline-block}.back:hover{color:var(--text)}.hero{aspect-ratio:1200/630;object-fit:cover;border-radius:6px;width:100%;margin-bottom:12px}.toggle{align-items:center;gap:8px;margin:0;display:inline-flex}.toggle input{width:auto;accent-color:var(--accent);margin:0;transform:scale(1.3)}.files{margin:0 0 12px;padding:0;list-style:none}.files li{border-bottom:1px solid var(--line);gap:2px;padding:12px 0;display:grid}.file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}progress{width:100%;height:6px;accent-color:var(--accent)}.steps{gap:8px;margin:12px 0;padding:0;list-style:none;display:grid}.steps li{color:var(--muted);padding-left:28px;position:relative}.steps li:before{content:"";border:1.5px solid var(--line-strong);box-sizing:border-box;border-radius:50%;width:14px;height:14px;position:absolute;top:5px;left:3px}.steps li.done{color:var(--text)}.steps li.done:before{background:var(--text);border-color:var(--text)}.steps li.active{color:var(--accent-ink)}.steps li.active:before{border-color:var(--accent);animation:1.2s ease-in-out infinite pulse}.steps li.failed{color:var(--error)}.steps li.failed:before{background:var(--error);border-color:var(--error)}@keyframes pulse{50%{background:var(--accent)}}.share{gap:8px;margin-top:12px;display:grid}.share-item input,.share-item textarea{margin-bottom:8px}.qr img{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:8px}.checklist summary,details summary{cursor:pointer}.checklist ul{margin:6px 0;padding-left:20px}.checklist li{margin:4px 0}.plan-editor{flex-direction:column;gap:8px;display:flex}.plan-editor>.button{align-self:flex-start}.plan-rooms{flex-direction:column;gap:6px;display:flex}.plan-rooms>.room-name{align-items:center}.plan-rooms>.room-name>input{flex:1}.room-swatch{border-radius:4px;flex:none;width:14px;height:14px}.plan-canvas{border:1px solid var(--line);border-radius:var(--radius);cursor:crosshair;background:#fff;width:100%;height:auto;display:block}.client-link input{margin-bottom:8px}.client-email input{flex:1;min-width:200px;margin:0}.client-data{grid-template-columns:max-content 1fr;gap:6px 16px;margin:12px 0;display:grid}.client-data dt{color:var(--muted)}.client-data dd{overflow-wrap:anywhere;margin:0}textarea.prose{font-family:inherit;font-size:var(--fs-md)}.plan-preview{border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-width:100%;max-height:420px;margin:8px 0 12px;display:block}.client-tabs{max-width:none;margin:20px 0 4px}.client-tabs .dot{background:var(--accent);border-radius:50%;width:8px;height:8px}.notice{background:var(--text);border-color:var(--text);color:var(--bg)}.notice h2{margin-bottom:8px}.notice-warning{background:var(--surface);background:color-mix(in srgb, var(--warn) 10%, var(--bg));border-color:var(--warn);color:var(--text)}.client-hints{margin:4px 0 12px;padding-left:18px}.client-hints li{margin:4px 0}button.wide{width:100%}.footer{text-align:center;margin-top:32px}.footer a{color:var(--text)}.preview-video{border-radius:var(--radius);background:#000;width:100%;max-height:70vh;margin:8px 0;display:block}
