:root{--bg: #141414;--surface: #1f1f1f;--card: #252525;--border: #363636;--text: #e8e8e8;--muted: #7a7a7a;--label: #aaaaaa;--radius: 10px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}#passphrase-modal{position:fixed;inset:0;background:#000000f2;z-index:999;display:flex;align-items:center;justify-content:center;transition:opacity .4s ease}#passphrase-modal.hidden{opacity:0;pointer-events:none}#passphrase-content{display:flex;flex-direction:column;align-items:center;gap:16px;max-width:420px;width:90%;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:36px 32px;text-align:center}#passphrase-content h2{font-size:1.4rem;font-weight:700;letter-spacing:-.3px}#passphrase-content p{font-size:.88rem;color:var(--label);line-height:1.55}#discord-link{font-size:.88rem;color:var(--text);text-decoration:underline;cursor:pointer}#passphrase-input-row{display:flex;gap:8px;width:100%;margin-top:4px}#passphrase-input{flex:1;background:var(--surface);border:1.5px solid var(--border);border-radius:7px;color:var(--text);font-size:1rem;padding:8px 12px;outline:none}#passphrase-input:focus{border-color:#888}#passphrase-error{font-size:.8rem;color:#c87e7e}#splash{position:fixed;inset:0;background:#000000eb;z-index:1000;display:flex;align-items:center;justify-content:center;transition:opacity .4s ease}#splash.hidden{opacity:0;pointer-events:none}#splash-content{display:flex;flex-direction:column;align-items:center;gap:24px;max-width:680px;width:90%}#splash-img{width:100%;border-radius:12px;box-shadow:0 8px 40px #0009}#splash-actions{display:flex;gap:12px;align-items:center}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow:hidden}.app{display:flex;flex-direction:column;height:100vh;padding:18px 20px 10px}header{text-align:center;margin-bottom:14px;flex-shrink:0}header h1{font-size:1.55rem;font-weight:700;letter-spacing:-.3px}.subtitle{color:var(--muted);margin-top:3px;font-size:.85rem}.layout{display:flex;gap:16px;flex:1;min-height:0}.viewer-col{flex:1;min-width:300px;display:flex;flex-direction:column;gap:6px}.resize-handle{width:6px;flex-shrink:0;cursor:col-resize;background:transparent;border-radius:3px;transition:background .15s;position:relative}.resize-handle:after{content:"";position:absolute;inset:0 1px;border-radius:3px;background:var(--border);transition:background .15s}.resize-handle:hover:after,.resize-handle.dragging:after{background:#666}#viewer-container{flex:1;min-height:0;background:#1a1a1a;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;position:relative}#viewer-container canvas{display:block;width:100%!important;height:100%!important}.viewer-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.85rem;font-style:italic;pointer-events:none}.viewer-controls{display:flex;align-items:center;justify-content:space-between;padding:0 2px;flex-shrink:0}.viewer-hint{font-size:.72rem;color:var(--muted)}.steps-col{width:380px;flex-shrink:0;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:0;padding-right:2px;padding-bottom:10px}.step-reveal{overflow:hidden;max-height:0;opacity:0;transform:translateY(-10px);transition:max-height .45s cubic-bezier(.4,0,.2,1),opacity .3s ease .08s,transform .4s ease}.step-reveal.revealed{max-height:9999px;overflow:visible;opacity:1;transform:translateY(0)}.card{background:var(--card);border-radius:var(--radius);padding:16px 18px;border:1px solid var(--border);flex-shrink:0;margin-bottom:10px}.step-label{font-size:.68rem;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--label);margin-bottom:12px}.tray-select-row{display:flex;gap:8px;align-items:center}.tray-select-row select{flex:1}#tray-select{width:100%;background:var(--surface);border:1.5px solid var(--border);border-radius:7px;color:var(--text);font-size:.92rem;padding:9px 12px;outline:none;cursor:pointer;appearance:auto}#tray-select:focus{border-color:#888}#tray-select option,#tray-select optgroup{background:var(--surface);color:var(--text)}.card.disabled{opacity:.4;pointer-events:none;user-select:none}.settings-grid{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:14px}.setting-group{display:flex;flex-direction:column;gap:5px}.setting-label{font-size:.75rem;color:var(--label);font-weight:500}.input-row{display:flex;align-items:center;gap:6px}input[type=number]{background:var(--surface);border:1.5px solid var(--border);border-radius:6px;color:var(--text);font-size:1.25rem;font-weight:700;padding:6px 10px;width:90px;outline:none;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:.4}input[type=number]:focus{border-color:#888}.unit{font-size:.95rem;color:var(--muted)}.inches-hint{font-size:.82rem;color:var(--muted);margin-top:3px;display:block}.layout-toggle{display:flex;align-items:center;gap:12px;margin-bottom:14px}.toggle-group{display:flex;border:1.5px solid var(--border);border-radius:7px;overflow:hidden}.toggle-btn{background:var(--surface);border:none;color:var(--muted);cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 16px;transition:background .12s,color .12s}.toggle-btn+.toggle-btn{border-left:1.5px solid var(--border)}.toggle-btn:hover,.toggle-btn.selected{background:#2e2e2e;color:var(--text)}.btn-secondary{background:var(--surface);border:1.5px solid var(--border);border-radius:7px;color:var(--text);cursor:pointer;font-size:.88rem;font-weight:600;padding:8px 18px;transition:background .12s,border-color .12s}.btn-secondary:hover{background:#2e2e2e;border-color:#666}.btn-primary{background:var(--text);border:none;border-radius:7px;color:var(--bg);cursor:pointer;font-size:.92rem;font-weight:700;padding:11px 24px;transition:opacity .12s,transform .1s}.btn-primary:hover:not(:disabled){opacity:.85}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-primary:disabled{opacity:.28;cursor:not-allowed}.btn-ghost{background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;font-size:.75rem;padding:4px 10px;transition:color .12s,border-color .12s}.btn-ghost:hover{color:var(--text);border-color:#666}.collapsible-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;padding-bottom:2px}.collapsible-header:hover .collapse-icon{color:var(--text)}.collapse-icon{font-size:.65rem;color:var(--muted);transition:transform .3s ease,color .15s}.collapsible.open .collapse-icon{transform:rotate(90deg)}.collapsible-body{overflow:hidden;max-height:0;opacity:0;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s ease}.collapsible.open .collapsible-body{max-height:800px;opacity:1}.collapsible-body>*{margin-top:14px}.adjuster-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.adjuster-group{display:flex;flex-direction:column;align-items:center;gap:5px}.adjuster-label{font-size:.67rem;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.adjuster-controls{display:flex;align-items:center;gap:8px}.adj-btn{width:28px;height:28px;background:var(--surface);border:1.5px solid var(--border);border-radius:5px;color:var(--text);font-size:1rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .1s;line-height:1}.adj-btn:hover{background:#333;border-color:#666}.adj-val,.adj-total{font-size:1.35rem;font-weight:700;min-width:32px;text-align:center}.adjuster-divider{width:1px;height:36px;background:var(--border)}.move-holes-section{margin-top:14px}.slider-group{margin-bottom:10px}.slider-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.slider-label{font-size:.75rem;color:var(--label);font-weight:500}.slider-val{font-size:.75rem;color:var(--text);font-weight:700;min-width:44px;text-align:right}input[type=range]{width:100%;accent-color:var(--text);cursor:pointer}.overlap-warn{margin-top:10px;padding:7px 10px;background:#211a00;border:1px solid #4a3a00;border-radius:6px;color:#c8a840;font-size:.8rem}#section-generate{display:flex;flex-direction:column;gap:6px}#section-generate .step-label{margin-bottom:2px}#generate-hint{color:var(--muted);font-size:.82rem;font-style:italic;margin-bottom:4px}.progress{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.85rem}.spinner{width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--text);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.result-msg{padding:9px 13px;border-radius:7px;font-size:.85rem;white-space:pre-wrap;word-break:break-all}.result-msg.success{background:#0c1f10;border:1px solid #28503a;color:#7ec898}.result-msg.error{background:#1f0c0c;border:1px solid #502828;color:#c87e7e}.result-msg.info{background:var(--surface);border:1px solid var(--border);color:var(--muted)}.steps-col::-webkit-scrollbar{width:5px}.steps-col::-webkit-scrollbar-track{background:transparent}.steps-col::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.mode-tabs{display:flex;border:1.5px solid var(--border);border-radius:7px;overflow:hidden;margin-bottom:14px}.mode-tab{flex:1;background:var(--surface);border:none;color:var(--muted);cursor:pointer;font-size:.85rem;font-weight:600;padding:7px 0;transition:background .12s,color .12s}.mode-tab+.mode-tab{border-left:1.5px solid var(--border)}.mode-tab:hover,.mode-tab.selected{background:#2e2e2e;color:var(--text)}.mixed-hole-row{display:flex;align-items:center;gap:7px;margin-bottom:8px}.mixed-hole-row input[type=number]{background:var(--surface);border:1.5px solid var(--border);border-radius:6px;color:var(--text);font-size:1rem;font-weight:700;padding:5px 8px;width:68px;outline:none;-moz-appearance:textfield}.mixed-hole-row input[type=number]:focus{border-color:#888}.mixed-hole-row input[type=number]::-webkit-inner-spin-button,.mixed-hole-row input[type=number]::-webkit-outer-spin-button{opacity:.4}.mixed-row-muted{font-size:.8rem;color:var(--muted);white-space:nowrap}.btn-remove-hole{background:transparent;border:1px solid var(--border);border-radius:5px;color:var(--muted);cursor:pointer;font-size:.75rem;padding:3px 8px;margin-left:auto;transition:color .12s,border-color .12s;line-height:1.4}.btn-remove-hole:hover{color:#c87e7e;border-color:#c87e7e}
