:root{--bg:#f8fafc;--fg:#334155;--muted:#64748b;--border:#e2e8f0;--surface:#ffffff;--bg-dark:#0b1120;--fg-dark:#f1f5f9;--muted-dark:#94a3b8;--border-dark:#223047;--surface-dark:#0f172a;--primary:#ec4899;--radius:12px}.pixelated{image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}body{font-family:Kanit,sans-serif;background-color:var(--bg);background-image:radial-gradient(1200px 500px at 10% -10%,rgba(236,72,153,.1),transparent 55%),radial-gradient(900px 380px at 100% 0,rgba(59,130,246,.1),transparent 55%),linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,0));color:var(--fg);letter-spacing:.02em;transition:background-color .2s ease,color .2s ease;position:relative;overflow-x:hidden}.dark body{background-color:var(--bg-dark);background-image:radial-gradient(900px 500px at 0 -10%,rgba(236,72,153,.12),transparent 60%),radial-gradient(800px 420px at 100% 0,rgba(14,165,233,.12),transparent 55%),linear-gradient(180deg,rgba(15,23,42,.8),rgba(15,23,42,0));color:var(--fg-dark)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.page-shell{max-width:1100px;margin:0 auto}.custom-select-trigger,.modern-input{width:100%;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--fg);padding:.85rem 1rem;transition:border-color .15s ease,background-color .15s ease}.dark .custom-select-trigger,.dark .modern-input{border-color:var(--border-dark);background:var(--surface-dark);color:var(--fg-dark)}.custom-select-trigger:focus,.modern-input:focus{outline:0;border-color:var(--primary)}.modern-input::placeholder{color:#94a3b8}.dark .modern-input::placeholder{color:#475569}.custom-select-container{position:relative;width:100%}.custom-select-trigger{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.custom-select-options{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);z-index:50;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .15s ease,transform .15s ease,visibility .15s ease;max-height:240px;overflow-y:auto}.dark .custom-select-options{background:var(--surface-dark);border-color:var(--border-dark)}.custom-select-options.open{opacity:1;visibility:visible;transform:translateY(0)}.custom-option{padding:.75rem 1rem;cursor:pointer;transition:background-color .12s ease,color .12s ease;color:var(--fg);font-size:.875rem}.dark .custom-option{color:var(--fg-dark)}.custom-option:hover{background:#f1f5f9;color:var(--primary)}.dark .custom-option:hover{background:rgba(255,255,255,.05);color:var(--primary)}.custom-option.selected{background:rgba(236,72,153,.12);color:var(--primary);font-weight:500}.upload-box{border:2px dashed #cbd5e1;border-radius:var(--radius);background:0 0;transition:border-color .15s ease,background-color .15s ease;min-height:120px;display:flex;align-items:center;justify-content:center}.dark .upload-box{border-color:#334155}.upload-box:hover{border-color:var(--primary);background:rgba(236,72,153,.04);cursor:pointer}.theme-checkbox{--toggle-size:10px;-webkit-appearance:none;appearance:none;width:5em;height:2.5em;font-size:var(--toggle-size);border-radius:99em;border:1px solid var(--border);background:#fff;position:relative;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.dark .theme-checkbox{border-color:var(--border-dark);background:var(--surface-dark)}.theme-checkbox::before{content:"";width:1.9em;height:1.9em;position:absolute;top:.3em;left:.3em;background:#e2e8f0;border-radius:50%;transition:left .25s ease,background-color .25s ease}.theme-checkbox:checked::before{left:calc(100% - 1.9em - .3em);background:var(--primary)}.step-indicator{width:36px;height:36px;border-radius:50%;background:#f1f5f9;color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:600;transition:background-color .2s ease,color .2s ease,border-color .2s ease;border:1px solid transparent}.dark .step-indicator{background:#1e293b;color:var(--muted-dark)}.step-indicator.active{background:rgba(236,72,153,.1);color:var(--primary);border-color:rgba(236,72,153,.25)}#toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);padding:14px 16px;border-radius:var(--radius);box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateX(100%);opacity:0;transition:transform .3s cubic-bezier(.16, 1, .3, 1),opacity .3s ease;min-width:300px;max-width:400px;color:var(--fg)}.toast.show{transform:translateX(0);opacity:1}.dark .toast{background:var(--surface-dark);border-color:var(--border-dark);color:var(--fg-dark);box-shadow:0 4px 12px rgba(0,0,0,.3)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.dark ::-webkit-scrollbar-thumb{background:#334155}#loader-wrapper{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .25s ease,visibility .25s ease}.dark #loader-wrapper{background:var(--bg-dark)}.loader-hidden{opacity:0;visibility:hidden}.loader-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 22px;border-radius:16px;background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 24px rgba(15,23,42,.08)}.dark .loader-card{background:var(--surface-dark);border-color:var(--border-dark);box-shadow:0 8px 24px rgba(0,0,0,.35)}.loader-text{font-size:.9rem;color:var(--muted);letter-spacing:.02em}.dark .loader-text{color:var(--muted-dark)}.loader-spinner{width:28px;height:28px;border-radius:999px;border:2px solid rgba(100,116,139,.25);border-top-color:rgba(100,116,139,.9);animation:spin .8s linear infinite}.dark .loader-spinner{border-color:rgba(148,163,184,.25);border-top-color:rgba(148,163,184,.9)}@keyframes spin{to{transform:rotate(360deg)}}.pixelated{image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges}