:root{--blue: #005eb8;--navy: #0e2a47;--navy-hover: #133659;--ink: #0f1b2a;--ink-2: #3a4a5c;--ink-3: #5b6b7d;--muted: #7a8898;--bg: #f4f7fa;--card: #ffffff;--rule: #e3e8ee;--rule-2: #d8e0e8;--btn-border: #c5d0db;--on-blue: #e1edf9;--disabled: #b4bec9;--danger: #a02b20;--danger-bg: #fdf1ef;--shadow: 0 1px 2px rgba(14, 42, 71, .08);--head: "Raleway", "Helvetica Neue", Arial, sans-serif;--body: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--body);font-size:15px;line-height:1.5;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-variant-numeric:lining-nums}a{color:var(--blue);text-decoration:none;transition:color .15s ease}a:hover{color:var(--navy)}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.shell{display:grid;grid-template-columns:400px 1fr;min-height:100vh}.panel{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;background:var(--blue);color:#fff;padding:48px 44px 40px;display:flex;flex-direction:column;justify-content:space-between;gap:48px}.panel a,.panel a:hover{color:#fff}.panel :focus-visible{outline-color:#fff}.panel__top{display:flex;flex-direction:column;gap:72px}.wordmark{font:800 17px/1 var(--head);letter-spacing:.14em;align-self:flex-start}.panel__title{display:flex;flex-direction:column;gap:24px}.panel__title h1{font:800 48px/1.02 var(--head);letter-spacing:-.02em;overflow-wrap:break-word}.panel__title p{font:400 18px/1.55 var(--body);color:var(--on-blue);text-wrap:pretty}.panel__nav{display:flex;flex-direction:column;gap:14px;font:700 13px/1 var(--head);letter-spacing:.12em}.panel__nav a[aria-current=page]{display:flex;align-items:center;gap:10px}.panel__nav a[aria-current=page]:before{content:"";width:14px;height:2px;background:#fff}.panel__nav .coffee{align-self:flex-start;margin-top:14px;padding:14px 18px;border:1px solid rgba(255,255,255,.6);transition:background .15s ease,border-color .15s ease}.panel__nav .coffee:hover{background:#ffffff1f;border-color:#fff}.content{min-width:0;padding:48px 56px 56px;display:flex;flex-direction:column;gap:32px}.content>.box,.content>.tool{width:100%;max-width:860px}.foot{margin-top:auto;font:600 12px/1 var(--head);letter-spacing:.1em;color:var(--muted)}.box{background:var(--card);padding:40px;box-shadow:var(--shadow)}.eyebrow,.box h2,.card h2{font:700 12px/1.4 var(--head);letter-spacing:.16em;text-transform:uppercase;color:var(--blue);margin-bottom:20px}label{font:700 12px/1.4 var(--head);letter-spacing:.12em;text-transform:uppercase;color:var(--navy)}input[type=text],input[type=number],select{width:100%;padding:12px 14px;border:1px solid var(--btn-border);border-radius:0;font:400 15px/1.4 var(--body);color:var(--ink);background:#fff;outline:none;transition:border-color .15s ease}input[type=text]:focus,input[type=number]:focus,select:focus{border-color:var(--blue)}input[type=text]:focus-visible,input[type=number]:focus-visible,select:focus-visible{outline:2px solid var(--blue);outline-offset:2px}input[type=radio],input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;flex:none}fieldset{border:none;display:flex;flex-direction:column;gap:20px}.field{display:flex;flex-direction:column;gap:8px}.field-hint,.field-help{font:400 13px/1.4 var(--body);color:var(--ink-3)}.radio-group{display:flex;flex-wrap:wrap;gap:24px}.radio-group label,.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font:400 15px/1.4 var(--body);letter-spacing:0;text-transform:none;color:var(--ink)}button,.btn{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;padding:16px 26px;border:1px solid var(--navy);border-radius:0;background:var(--navy);color:#fff;cursor:pointer;font:700 13px/1 var(--head);letter-spacing:.1em;text-transform:uppercase;transition:background .15s ease,border-color .15s ease,color .15s ease}button:hover:not(:disabled),.btn:hover:not(:disabled){background:var(--navy-hover);border-color:var(--navy-hover)}button:disabled{background:var(--disabled);border-color:var(--disabled);cursor:not-allowed}.btn--secondary{background:transparent;color:var(--navy);border-color:var(--btn-border)}.btn--secondary:hover:not(:disabled){background:transparent;color:var(--navy);border-color:var(--navy)}.error,.error-box{margin-top:20px;padding:14px 16px;background:var(--danger-bg);border-left:3px solid var(--danger);color:var(--danger);font:400 14px/1.5 var(--body)}@media (max-width: 1199px){.shell{grid-template-columns:340px 1fr}.panel{padding:40px 32px 32px}.panel__top{gap:56px}.panel__title h1{font-size:40px}.panel__title p{font-size:16px}.content{padding:40px 32px 48px}}@media (max-width: 959px){.shell{grid-template-columns:1fr}.panel{position:static;height:auto;overflow:visible;padding:32px 24px;gap:32px}.panel__top{gap:32px}.panel__title h1{font-size:40px}.content{padding:24px 16px 32px}.box{padding:28px 20px}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}.tool{display:flex;flex-direction:column;gap:24px}.preset-bar,.save-prompt{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--card);padding:16px 20px;box-shadow:var(--shadow)}.preset-bar select{flex:1 1 200px;min-width:0;width:auto}.preset-bar label,.save-prompt label{white-space:nowrap}.save-prompt input[type=text]{flex:1 1 180px;min-width:0;width:auto}.save-prompt button,.preset-bar button{padding:13px 20px}.btn-save-cancel{background:transparent;color:var(--navy);border-color:var(--btn-border)}.btn-save-cancel:hover:not(:disabled){background:transparent;color:var(--navy);border-color:var(--navy)}.save-error{flex-basis:100%;font:400 13px/1.4 var(--body);color:var(--danger)}.tabs{display:flex;gap:28px;border-bottom:1px solid var(--rule-2)}.tab{padding:0 0 14px;margin-bottom:-1px;background:transparent;color:var(--ink-3);border:none;border-bottom:2px solid transparent;align-self:auto;font:700 12px/1 var(--head);letter-spacing:.14em;text-transform:uppercase}.tab:hover:not(:disabled){background:transparent;color:var(--navy);border-color:transparent;border-bottom-color:var(--btn-border)}.tab--active,.tab--active:hover:not(:disabled){color:var(--blue);border-bottom-color:var(--blue)}.params-form{display:flex;flex-direction:column;gap:24px}.section{background:var(--card);padding:32px 36px;box-shadow:var(--shadow)}.section h2{font:700 12px/1.4 var(--head);letter-spacing:.16em;text-transform:uppercase;color:var(--blue);margin-bottom:20px}.fields-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:22px}.help{font:400 13px/1.4 var(--body);color:var(--ink-3)}.field--check label{display:flex;align-items:center;gap:8px;cursor:pointer;font:400 15px/1.4 var(--body);letter-spacing:0;text-transform:none;color:var(--ink)}.field--check input[type=checkbox]{cursor:pointer}.field--disabled label{color:var(--muted)}.field--disabled input{background:var(--bg);color:var(--muted);cursor:not-allowed}.actions{display:flex;flex-direction:column;align-items:flex-start;gap:14px}.btn-generate{gap:12px}.btn-preview{gap:12px;background:transparent;color:var(--navy);border-color:var(--btn-border)}.btn-preview:hover:not(:disabled){background:transparent;color:var(--navy);border-color:var(--navy)}.btn-preview:disabled{background:transparent;color:var(--muted);border-color:var(--btn-border)}.btn-preview .spinner{border-color:#0003;border-top-color:var(--navy)}.preview{margin:0 0 20px}.previews{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:20px;align-items:start}.previews .preview{margin:0}.stl-viewer{width:100%;aspect-ratio:3 / 2;border:1px solid var(--btn-border);overflow:hidden;touch-action:none}.stl-viewer canvas{display:block}.preview img{display:block;width:100%;height:auto;border:1px solid var(--btn-border)}.preview figcaption{margin-top:8px;font:400 14px/1.5 var(--body)}.loading-note{font:400 14px/1.5 var(--body);color:var(--ink-3)}.spinner{display:inline-block;width:14px;height:14px;flex:none;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-box{margin-top:0}.error-box strong{display:block;margin-bottom:6px;font-weight:700}.error-box pre{font:400 12px/1.5 var(--mono);white-space:pre-wrap;word-break:break-word}@media (max-width: 959px){.section{padding:24px 20px}.tabs{gap:20px}}.link-btn{padding:0;min-height:0;background:none;border:none;color:var(--navy);text-decoration:underline;font:inherit;cursor:pointer}.link-btn:hover:not(:disabled){background:none;border:none}
