:root{
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:#17313d;background:#eef7fa;
  --primary:#07517a;--primary-2:#0a6b9f;--line:#d7e3e8;--muted:#60737d;
  --ok:#176b4d;--danger:#8b2525;--warn:#8a5b00;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#f5fbfd 0,#eef7fa 240px,#eef7fa 100%)}
.topbar{background:#ffffffed;backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.topbar-inner{max-width:1220px;margin:auto;min-height:68px;padding:10px 20px;display:flex;align-items:center;gap:26px}
.brand{font-weight:900;font-size:20px;color:var(--primary);text-decoration:none}.topbar nav{display:flex;gap:16px;align-items:center;flex:1}
.topbar nav a,.link-button{border:0;background:none;color:#31505f;font:inherit;font-weight:700;text-decoration:none;cursor:pointer;padding:5px}.logout-form{margin:0}.identity{text-align:right;display:flex;flex-direction:column}.identity small{color:var(--muted)}
.wrap{max-width:1220px;margin:36px auto;padding:0 20px 52px}.wrap.narrow{max-width:540px;margin-top:70px}
.card{background:#fff;border:1px solid #e3edf1;border-radius:24px;padding:32px;box-shadow:0 18px 55px #07517a14;margin-bottom:22px}.card.compact{padding:26px}.login-card{padding:38px}
.badge{display:inline-block;background:var(--primary);color:#fff;padding:7px 11px;border-radius:999px;font-weight:800;font-size:12px;letter-spacing:.04em}.badge.ok{background:var(--ok)}.badge.danger{background:var(--danger)}
h1{font-size:38px;line-height:1.08;margin:16px 0 8px;color:var(--primary)}h2{margin:0 0 14px;color:var(--primary)}h3{color:#355664;margin:22px 0 10px}.lead{font-size:17px;color:var(--muted);margin-top:5px}.page-head,.result-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
label{display:block;font-weight:750;margin:16px 0 6px}input,select,textarea{width:100%;margin-top:7px;padding:13px 14px;border:1px solid #c9d9df;border-radius:11px;background:#fff;font-size:15px;color:#17313d;outline:none;transition:.16s border-color,.16s box-shadow}input:focus,select:focus,textarea:focus{border-color:#72abc7;box-shadow:0 0 0 4px #0b79b20f}input[type=checkbox]{width:auto;margin-right:7px}.helptext{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:5px;line-height:1.45}ul.errorlist{color:#8b2525;padding-left:18px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
button,.button-link,.downloads a{border:0;background:var(--primary);color:#fff;border-radius:11px;padding:13px 18px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.16s transform,.16s background}button:hover,.button-link:hover,.downloads a:hover{background:var(--primary-2);transform:translateY(-1px)}button{width:100%;margin-top:18px;cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed;transform:none}.button-link{width:auto}.button-link.secondary,.downloads a.secondary{background:#eef5f8;color:var(--primary);border:1px solid #d5e6ed}.button-link.secondary:hover,.downloads a.secondary:hover{background:#e5f1f6}
.downloads{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}.download-disabled{padding:13px 18px;border-radius:11px;background:#f6e8e8;color:#8b2525;font-weight:800;border:1px solid #efcccc}
.warning,.error,.note,.flash{padding:14px 16px;border-radius:12px;margin:16px 0}.warning{background:#fff4d6;color:#6f520f}.error{background:#ffe2e2;color:#7b1d1d}.note{background:#f0f7fa;color:#53636d}.flash.success{background:#e2f5e8;color:#205b34}.flash.error{background:#ffe2e2;color:#7b1d1d}.back{color:var(--primary);font-weight:750;text-decoration:none;display:inline-block;margin:0 0 16px}
.two-col{display:grid;grid-template-columns:1.15fr .85fr;gap:22px}.tenant-list{display:flex;flex-direction:column;gap:10px}.tenant-row{display:flex;justify-content:space-between;align-items:center;gap:15px;border:1px solid var(--line);border-radius:14px;padding:15px;text-decoration:none;color:inherit}.tenant-row:hover{border-color:#8bb6ca}.tenant-row small,.simple-list span{display:block;color:var(--muted);margin-top:3px}.tenant-meta{text-align:right}.pill{display:inline-block;padding:5px 10px;border-radius:999px;background:#e2f5e8;color:#205b34;font-weight:800;font-size:12px}.pill.off{background:#f4e5e5;color:#802f2f}.simple-list{display:flex;flex-direction:column}.simple-list>div{padding:11px 0;border-bottom:1px solid #edf2f4}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips span{padding:7px 10px;border-radius:999px;background:#eef7fa;color:var(--primary);font-weight:700}.hint{font-size:13px;color:var(--muted);line-height:1.5}.hint a{color:var(--primary)}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}.metrics.metrics-2{grid-template-columns:repeat(2,1fr);margin-top:0}.metrics div{background:#f4f9fb;border:1px solid #e6eff3;border-radius:13px;padding:16px}.metrics strong{display:block;color:var(--primary);font-size:20px}.metrics span{color:var(--muted);font-size:13px}p label{margin:0}form p{margin:13px 0}form p>label{margin-bottom:5px}.errorlist+input{border-color:#d98c8c}
.generator-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:28px;align-items:start}.generator-form{min-width:0}.production-summary{background:linear-gradient(180deg,#f4fafc,#eef7fa);border:1px solid #dcebf1;border-radius:20px;padding:22px;position:sticky;top:96px}.production-summary h3{margin:8px 0 12px}.production-summary ol{padding-left:20px;color:#48616d;line-height:1.65;margin:0 0 20px}.summary-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:var(--primary);color:#fff;font-weight:900;box-shadow:0 8px 20px #07517a25}.summary-rule{display:flex;justify-content:space-between;gap:15px;border-top:1px solid #d9e7ec;padding:12px 0;font-size:13px}.summary-rule span{color:var(--muted)}.summary-rule strong{color:var(--primary)}
.result-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.85fr);gap:26px;margin-top:24px;align-items:start}.viewer-card{border:1px solid #dce8ed;border-radius:20px;overflow:hidden;background:#f7fbfc}.viewer-toolbar{display:flex;justify-content:space-between;gap:15px;padding:14px 16px;background:#fff;border-bottom:1px solid #e3edf1}.viewer-toolbar span{font-size:12px;color:var(--muted)}#stl-viewer{min-height:360px;position:relative;display:grid;place-items:center;overflow:hidden}#stl-viewer canvas{display:block;width:100%!important}.viewer-loading{color:var(--muted);font-weight:700}.viewer-error{padding:12px 16px;color:#7b1d1d;background:#ffe9e9;border-top:1px solid #efcccc;font-size:13px}.validation-box{border-radius:16px;border:1px solid #dce8ed;padding:16px;background:#fbfdfe}.validation-box.valid{border-color:#cfe6d9;background:#f7fcf9}.validation-box.invalid{border-color:#efcccc;background:#fffafa}.validation-box h3{margin:0 0 10px}.validation-row{display:flex;gap:10px;padding:10px 0;border-top:1px solid #edf2f4}.validation-row:first-of-type{border-top:0}.validation-row p{margin:2px 0 0;color:#5c6f78;font-size:13px;line-height:1.45}.validation-row strong{font-size:11px;letter-spacing:.04em}.status-dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto;margin-top:5px}.validation-row.error .status-dot{background:#c84545}.validation-row.warning .status-dot{background:#d49a23}.validation-row.info .status-dot{background:#1c8a60}.validation-row.error strong{color:#a32e2e}.validation-row.warning strong{color:#946400}.validation-row.info strong{color:#176b4d}
@media(max-width:960px){.generator-grid,.result-layout,.two-col{grid-template-columns:1fr}.production-summary{position:static}.viewer-card{order:-1}}
@media(max-width:800px){.grid,.metrics,.metrics.metrics-2{grid-template-columns:1fr}.topbar-inner{flex-wrap:wrap}.topbar nav{order:3;width:100%;overflow:auto}.identity{margin-left:auto}.wrap{margin-top:22px;padding:0 12px 35px}.card{padding:22px}h1{font-size:30px}.page-head,.result-head{flex-direction:column}.viewer-toolbar{flex-direction:column;gap:4px}}

/* Fase 7 — ajuste fino das argolas */
.extra-panel{margin-top:22px;border:1px solid #d9e7ec;border-radius:18px;padding:18px;background:#f9fcfd;transition:.18s opacity,.18s filter}.extra-panel.disabled-panel{opacity:.55;filter:grayscale(.15)}.extra-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px}.extra-panel-head>div{display:flex;flex-direction:column;gap:3px}.extra-panel-head strong{color:var(--primary);font-size:16px}.extra-panel-head span{font-size:12px;color:var(--muted)}.mini-badge{background:#e7f4f8!important;color:var(--primary)!important;border:1px solid #d3e9f0;border-radius:999px;padding:6px 9px;font-weight:800;white-space:nowrap}.ring-size-grid{align-items:end}.input-suffix{display:flex;align-items:center;gap:0;margin-top:7px}.input-suffix input{margin-top:0;border-radius:11px 0 0 11px}.input-suffix>span{align-self:stretch;display:flex;align-items:center;padding:0 12px;border:1px solid #c9d9df;border-left:0;border-radius:0 11px 11px 0;background:#eef5f8;color:var(--primary);font-weight:800;font-size:13px}.ring-calculated{border:1px dashed #c7dce5;border-radius:14px;padding:14px 16px;margin:16px 0 6px;background:#fff}.ring-calculated span,.ring-calculated small{display:block;color:var(--muted);font-size:12px}.ring-calculated strong{display:block;color:var(--primary);font-size:22px;margin:4px 0}.check-row{display:flex!important;align-items:flex-start;gap:10px;padding:13px 14px;border:1px solid #dce8ed;border-radius:13px;background:#fff;margin-top:16px!important;cursor:pointer}.check-row input{margin:2px 0 0;flex:0 0 auto}.check-row span{display:flex;flex-direction:column;gap:2px}.check-row small{color:var(--muted);font-weight:400}.compact-check{margin:0!important;flex:1}.ring-adjust-fields{margin-top:14px;padding-top:14px;border-top:1px solid #e2edf1}.ring-adjust-toolbar{display:flex;align-items:center;gap:12px;justify-content:space-between}.small-button{width:auto!important;margin:0!important;padding:10px 13px!important;background:#eef5f8!important;color:var(--primary)!important;border:1px solid #d5e6ed!important}.ring-side-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.ring-side-card{border:1px solid #dce8ed;border-radius:14px;padding:14px;background:#fff}.ring-side-card h4{margin:0 0 8px;color:var(--primary)}.ring-side-card label{font-size:13px}.ring-side-card.linked{opacity:.55}.field-hint{float:right;color:var(--muted);font-size:11px;font-weight:400}.ring-result-box{border:1px solid #d7e7ed;border-radius:14px;background:#f7fbfc;padding:14px;margin:-8px 0 16px}.ring-result-box>strong{color:var(--primary);display:block;margin-bottom:8px}.ring-result-box>div{display:flex;justify-content:space-between;gap:16px;padding:6px 0;border-top:1px solid #e5eef2;font-size:13px}.ring-result-box>div span{color:var(--muted)}.ring-result-box>div b{font-weight:800;text-align:right}.ring-result-box small{display:block;color:var(--muted);margin-top:7px}
@media(max-width:800px){.ring-side-grid{grid-template-columns:1fr}.ring-adjust-toolbar{align-items:stretch;flex-direction:column}.small-button{width:100%!important}.extra-panel-head{flex-direction:column}.field-hint{float:none;display:block;margin-top:2px}}

/* Fase 8 — preview de fontes e calibração de produção */
.font-preview-section{margin:20px 0 24px;border:1px solid #dce8ed;border-radius:18px;padding:18px;background:#f9fcfd}.font-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.font-preview-card{margin:0!important;width:100%;padding:13px!important;background:#fff!important;color:#17313d!important;border:1px solid #dce8ed!important;display:grid!important;grid-template-columns:1fr auto;grid-template-rows:76px auto;align-items:center;text-align:left}.font-preview-card:hover,.font-preview-card.selected{border-color:#07517A!important;box-shadow:0 0 0 3px #07517a14;transform:none!important}.font-preview-card.selected:after{content:'Selecionada';grid-column:2;grid-row:2;color:#07517A;font-size:10px;font-weight:900}.font-preview-canvas{grid-column:1/3;width:100%;height:72px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:9px;background:#fff}.font-preview-canvas img{width:92%;height:58px;object-fit:contain;display:block}.font-preview-card strong{font-size:13px;color:#07517A}.font-preview-card small{font-size:10px;color:#687c86}.calibration-kpi{background:#eef7fa;border:1px solid #d8e9ef;border-radius:12px;padding:12px}.calibration-kpi strong{display:block;color:#07517A;font-size:18px}.calibration-kpi span{font-size:11px;color:#687c86}
@media(max-width:800px){.font-preview-grid{grid-template-columns:1fr}}
.font-preview-card.disabled-font{opacity:.42;filter:grayscale(1);cursor:not-allowed!important}.font-preview-card.disabled-font:hover{border-color:#dce8ed!important;box-shadow:none}
