.tool-page{min-height:100svh;padding:calc(var(--header-h) + clamp(28px, 5vw, 64px)) 0 clamp(64px, 8vw, 120px)}.tool-back{color:var(--fg-3);font:500 13px/1 var(--font-mono);letter-spacing:.08em;align-items:center;gap:8px;margin-bottom:28px;transition:color .25s;display:inline-flex}.tool-back:hover,.tool-back:focus-visible{color:var(--accent)}.tool-title{max-width:20ch;font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;font-size:clamp(36px,5vw,72px);font-weight:400;line-height:1.04}.tool-lead{max-width:60ch;color:var(--fg-2);margin-top:18px;font-size:clamp(16px,.4vw + 15px,19px)}.tool-privacy{border:1px solid var(--line-2);color:var(--fg-2);font:500 12px/1.2 var(--font-mono);letter-spacing:.04em;border-radius:999px;align-items:center;gap:8px;margin-top:18px;padding:6px 12px;display:inline-flex}.tool-privacy svg,.dropzone__icon svg{fill:none;stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.tool-privacy svg{width:15px;height:15px}.tool-work{margin-top:clamp(28px,4vw,48px)}.dropzone{border:1.5px dashed var(--line-3);border-radius:var(--radius);background:rgb(var(--accent-rgb) / .03);text-align:center;min-height:clamp(260px,36vh,380px);transition:border-color .3s, background-color .3s, transform .3s var(--ease-out);place-items:center;padding:32px;display:grid;position:relative}.dropzone:before,.dropzone:after{content:"";border-color:var(--accent);pointer-events:none;border-style:solid;width:22px;height:22px;position:absolute}.dropzone:before{border-width:2px 0 0 2px;top:14px;left:14px}.dropzone:after{border-width:0 2px 2px 0;bottom:14px;right:14px}.dropzone:hover,.dropzone:focus-within,.dropzone.is-over{border-color:var(--accent);background:rgb(var(--accent-rgb) / .08)}.dropzone.is-over{transform:scale(1.01)}.dropzone__input{opacity:0;width:100%;height:100%;position:absolute;inset:0}.dropzone__body{pointer-events:none;justify-items:center;gap:10px;display:grid}.dropzone__icon svg{stroke-width:1.2px;width:52px;height:52px}.dropzone__title{font-family:var(--font-display);font-size:clamp(22px,2.2vw,30px);line-height:1.15}.dropzone__hint{color:var(--fg-3);font-size:15px}.formats{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:6px;display:flex}.format{border:1px solid var(--line-2);color:var(--fg-2);font:600 11px/1.3 var(--font-mono);letter-spacing:.06em;border-radius:6px;padding:3px 9px}.format--out{border-color:var(--line-3);color:var(--accent)}.workspace{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:20px;display:grid}.workspace[hidden]{display:none}.viewer{border:1px solid var(--line-2);border-radius:var(--radius);background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 40px 40px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 40px 40px, var(--drawing-bg);height:clamp(420px,68vh,760px);color:var(--fg);touch-action:none;position:relative;overflow:hidden}.viewer__canvas{cursor:grab;touch-action:none;position:absolute;inset:0}.viewer__canvas:active{cursor:grabbing}.viewer__canvas svg{width:100%;height:100%}.viewer__tools{gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.icon-btn{border:1px solid var(--line-2);background:rgb(var(--bg-rgb) / .82);width:40px;height:40px;color:var(--fg);font:600 18px/1 var(--font-mono);border-radius:10px;place-items:center;transition:border-color .25s,color .25s;display:grid}.icon-btn:hover,.icon-btn:focus-visible{border-color:var(--accent);color:var(--accent)}.viewer__meta{pointer-events:none;flex-wrap:wrap;gap:6px;display:flex;position:absolute;top:12px;left:12px}.viewer__meta span{background:rgb(var(--bg-rgb) / .82);color:var(--fg-2);font:500 12px/1.3 var(--font-mono);border-radius:6px;padding:4px 9px}.panel{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);gap:22px;padding:22px;display:grid}.panel__head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.link-btn{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:rgb(var(--accent-rgb) / .4);text-decoration-color:rgb(var(--accent-rgb) / .4);text-underline-offset:3px;flex:none;font-size:13px;font-weight:500;transition:text-decoration-color .25s}.link-btn:hover,.link-btn:focus-visible{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.panel__hint{color:var(--fg-3);font-size:13px;line-height:1.5}.status--open:empty{display:none}.tool-work>.process{margin-top:16px}.fields>.panel__hint{grid-column:1/-1}.panel__hint--warn{border-left:2px solid var(--accent);background:rgb(var(--accent-rgb) / .06);color:var(--fg-2);border-radius:4px;padding:10px 12px}.panel__title{color:var(--fg-3);font:500 12px/1.3 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px}.layers{gap:2px;max-height:220px;margin-inline:-6px;padding-right:4px;display:grid;overflow:auto}.layer{border-radius:8px;grid-template-columns:auto 12px minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 6px;font-size:14px;display:grid}.layer:hover{background:rgb(var(--accent-rgb) / .06)}.layer input{width:16px;height:16px;accent-color:var(--brand)}.layer__swatch{border:1px solid var(--line-2);border-radius:3px;width:12px;height:12px}.layer__name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.layer__count{color:var(--fg-3);font:500 12px/1 var(--font-mono)}.choice{flex-wrap:wrap;gap:6px;display:flex}.choice label{position:relative}.choice input{opacity:0;position:absolute}.choice span{border:1px solid var(--line-2);min-height:36px;color:var(--fg-2);border-radius:999px;align-items:center;padding:0 14px;font-size:14px;font-weight:500;transition:border-color .25s,background-color .25s,color .25s;display:inline-flex}.choice input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.choice input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.field{gap:6px;font-size:14px;display:grid}.field>span{color:var(--fg-3)}.field select,.field input[type=number],.field input[type=text],.field textarea{border:1px solid var(--line-2);background:rgb(var(--bg-rgb) / .6);width:100%;min-height:40px;color:var(--fg);font:inherit;border-radius:10px;padding:8px 12px}.field textarea{min-height:120px;font:400 14px/1.5 var(--font-mono);resize:vertical}.field select:focus-visible,.field input:focus-visible,.field textarea:focus-visible{border-color:var(--accent);outline:2px solid rgb(var(--accent-rgb) / .3)}.fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.check{align-items:center;gap:10px;font-size:14px;display:flex}.check input{width:16px;height:16px;accent-color:var(--brand)}.status{min-height:1.5em;color:var(--fg-2);font-size:14px}.status.is-error{color:var(--danger)}.status.is-success{color:var(--accent)}.btn[disabled]{opacity:.55;pointer-events:none}.btn--small{min-height:38px;padding:0 16px;font-size:14px}.process{border:1px solid var(--line-2);background:rgb(var(--accent-rgb) / .05);animation:process-in .35s var(--ease-out);border-radius:14px;gap:10px;padding:14px 16px 16px;display:grid}.process__head{align-items:center;gap:10px;display:flex}.process__icon{flex:none;place-items:center;display:grid}.process__icon svg{fill:none;width:22px;height:22px;stroke:var(--accent);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.process__ring{stroke-dasharray:.72 .28;transform-box:fill-box;transform-origin:50%;animation:1s linear infinite process-spin}.process__tick,.process__bang{display:none}.process__title{min-width:0;color:var(--fg);flex:1;font-weight:500;line-height:1.35}.process__pct{color:var(--fg-3);font:500 12px/1 var(--font-mono)}.process__track{background:var(--line-3);height:1px;margin-inline:4px;position:relative}.process__track:before,.process__track:after{content:"";background:var(--fg-3);width:1.5px;height:11px;position:absolute;top:-5px;rotate:45deg}.process__track:before{left:-1px}.process__track:after{right:-1px}.process__track i{background:var(--accent);transform-origin:0;transition:transform .35s var(--ease-out);display:block;position:absolute;inset:-1px 0;transform:scaleX(0)}.process.is-indeterminate .process__track{overflow:hidden}.process.is-indeterminate .process__track i{width:34%;animation:process-slide 1.2s var(--ease-in-out) infinite;right:auto;transform:none}.process__detail{min-height:1.4em;color:var(--fg-3);overflow-wrap:anywhere;font-size:13px}.process__actions:empty{display:none}.process[data-state=done]{border-color:rgb(var(--accent-rgb) / .45)}.process[data-state=done] .process__ring{stroke-dasharray:none;animation:none}.process[data-state=done] .process__tick{stroke-dasharray:1;stroke-dashoffset:1px;animation:process-draw .45s .1s var(--ease-out) forwards;display:block}.process[data-state=error]{border-color:var(--danger);background:0 0}.process[data-state=error] .process__icon svg{stroke:var(--danger)}.process[data-state=error] .process__ring{stroke-dasharray:none;animation:none}.process[data-state=error] .process__bang{display:block}.process[data-state=error] .process__track i{background:var(--danger)}.result.is-fresh dd{animation:result-fresh .7s var(--ease-out)}@keyframes result-fresh{0%{color:var(--accent);translate:0 3px}}@keyframes process-in{0%{opacity:0;translate:0 6px}}@keyframes process-spin{to{rotate:1turn}}@keyframes process-slide{0%{translate:-110%}to{translate:310%}}@keyframes process-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.result.is-fresh dd,.process,.process__ring,.process.is-indeterminate .process__track i,.process[data-state=done] .process__tick{animation:none}.process[data-state=done] .process__tick{stroke-dashoffset:0}.process.is-indeterminate .process__track i{opacity:.4;width:100%}}.btn.is-busy{pointer-events:none}.btn.is-busy:after{content:"";border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.tools-hero{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;display:grid}.tools-facts{gap:28px;display:flex}.tools-fact dd{color:var(--accent);font-family:var(--font-display);font-size:clamp(34px,3.4vw,52px);line-height:1}.tools-fact dt{color:var(--fg-3);margin-top:6px;font-size:13px}.catalog-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-top:clamp(28px,4vw,48px);display:flex}.catalog-search{flex:260px;max-width:380px;position:relative}.catalog-search input{border:1px solid var(--line-2);background:rgb(var(--bg-rgb) / .5);width:100%;min-height:46px;color:var(--fg);font:inherit;border-radius:999px;padding:0 16px 0 44px}.catalog-search input:focus-visible{border-color:var(--accent);outline:2px solid rgb(var(--accent-rgb) / .3)}.catalog-search svg{fill:none;width:18px;height:18px;stroke:var(--fg-3);stroke-width:1.8px;position:absolute;top:50%;left:16px;translate:0 -50%}.catalog{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:26px;display:grid}.catalog-card{border:1px solid var(--line-2);border-radius:var(--radius);background:linear-gradient(180deg, var(--surface), var(--bg-2));transition:border-color .35s, transform .45s var(--ease-out), box-shadow .45s;grid-template-rows:150px auto;display:grid;position:relative;overflow:hidden}.catalog-card[hidden]{display:none}.catalog-card--wide{grid-column:span 2;grid-template-rows:auto;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.catalog-card--wide .catalog-card__art{border-right:1px solid var(--line);border-bottom:0}.catalog-card--wide .catalog-card__body{align-content:center}a.catalog-card:hover,a.catalog-card:focus-visible{border-color:var(--accent);box-shadow:0 24px 60px -30px rgb(var(--accent-rgb) / .45);transform:translateY(-4px)}.catalog-card__art{border-bottom:1px solid var(--line);background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 24px 24px;position:relative;overflow:hidden}.catalog-card__body{align-content:start;gap:8px;padding:20px 22px 22px;display:grid}.catalog-card__top{justify-content:space-between;align-items:center;gap:10px;display:flex}.catalog-card__kind{color:var(--fg-3);font:500 11px/1.3 var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.catalog-card__name{font-family:var(--font-display);font-size:22px;line-height:1.2}.catalog-card__text{color:var(--fg-2);font-size:15px;line-height:1.5}.catalog-card .formats{justify-content:flex-start;margin-top:4px}.tag--live{border:1px solid var(--line-3);color:var(--accent)}.catalog-empty{color:var(--fg-3);margin-top:26px}.result-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.result-grid--five{grid-template-columns:repeat(5,minmax(0,1fr))}@media (max-width:1279px){.result-grid--five{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:679px){.result-grid--five{grid-template-columns:repeat(2,minmax(0,1fr))}}.result{border:1px solid var(--line-2);background:var(--surface);border-radius:14px;padding:16px}.result dt{color:var(--fg-3);font-size:13px}.result dd{color:var(--fg);font:500 22px/1.2 var(--font-mono);margin-top:6px}.result--accent dd{color:var(--accent)}.calc{grid-template-columns:minmax(0,420px) minmax(0,1fr);align-items:start;gap:24px;display:grid}.file-list{gap:8px;display:grid}.file-row{border:1px solid var(--line-2);background:var(--surface);border-radius:12px;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px 10px 6px;transition:border-color .25s,box-shadow .25s;display:grid}.file-row:hover{border-color:var(--line-3)}.file-row img{object-fit:cover;border-radius:6px;width:44px;height:44px}.file-row__icon{background:rgb(var(--accent-rgb) / .12);width:44px;height:44px;color:var(--accent);font:600 11px/1 var(--font-mono);border-radius:8px;place-items:center;display:grid}.file-row__name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.file-row__meta{color:var(--fg-3);font:500 12px/1 var(--font-mono)}.file-row__actions{gap:4px;display:flex}.file-row__actions .icon-btn{width:34px;height:34px;font-size:15px}html[data-theme=glass] :is(.panel,.catalog-card,.result,.file-row,.viewer__meta span,.icon-btn){border-color:var(--glass-edge);background:var(--glass);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}html[data-theme=glass] .viewer{border-color:var(--glass-edge);box-shadow:var(--glass-shadow)}@media (max-width:1099px){.workspace,.calc,.tools-hero{grid-template-columns:minmax(0,1fr)}.catalog{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-card--wide{grid-template-rows:150px auto;grid-template-columns:minmax(0,1fr)}.catalog-card--wide .catalog-card__art{border-right:0;border-bottom:1px solid var(--line)}}@media (max-width:679px){.catalog{grid-template-columns:minmax(0,1fr)}.catalog-card--wide{grid-column:auto}.fields{grid-template-columns:minmax(0,1fr)}.tools-facts{gap:20px}}.dropzone.is-busy{opacity:.6;pointer-events:none}.calc-stack{gap:28px;display:grid}.calc-card__title{font-family:var(--font-display);margin-bottom:14px;font-size:clamp(22px,2vw,28px)}.result-grid--wide{grid-template-columns:minmax(0,1fr);margin-top:12px}.table-wrap{border:1px solid var(--line-2);border-radius:var(--radius);max-height:560px;overflow:auto}.table{border-collapse:collapse;width:100%;font:400 14px/1.4 var(--font-mono)}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:10px 12px}.table th{background:var(--surface);color:var(--fg-3);font-weight:500;position:sticky;top:0}.table a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.checks{gap:6px;margin-top:6px;font-size:14px;display:grid}.checks .is-ok{color:var(--accent)}.checks .is-warn{color:var(--amber)}.calc__out{gap:16px;display:grid}.stair{border:1px solid var(--line-2);border-radius:var(--radius);background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 24px 24px, var(--drawing-bg);padding:16px}.stair__svg{width:100%;height:auto;max-height:420px;display:block}.stair__line{fill:none;stroke:var(--fg);stroke-width:2.5px;stroke-linejoin:miter}.stair__floor{fill:none;stroke:var(--fg-3);stroke-width:1.5px;stroke-dasharray:6 5}.stair__pitch{fill:none;stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:4 4}.stair__dim{fill:none;stroke:var(--accent);stroke-width:1px;stroke-linecap:round}.stair__ext{fill:none;stroke:var(--fg-3);stroke-width:.8px}.stair__text{fill:var(--fg-2);font:500 13px var(--font-mono)}.stair__text--accent{fill:var(--accent)}html[data-theme=glass] :is(.table-wrap,.stair){border-color:var(--glass-edge);box-shadow:var(--glass-shadow)}.file-row__grip{width:26px;color:var(--fg-3);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;justify-items:center;gap:3px;padding:6px 0;transition:color .2s,background-color .2s;display:grid}.file-row__grip svg{fill:currentColor;width:9px;height:15px}.file-row__grip b{color:var(--fg-2);font:600 11px/1 var(--font-mono)}.file-row__grip:hover{background:rgb(var(--accent-rgb) / .09);color:var(--accent)}.file-list:has(>:only-child) .file-row__grip{cursor:default}.file-list:has(>:only-child) .file-row__grip svg{visibility:hidden}.file-list.is-sorting{-webkit-user-select:none;user-select:none}.file-list.is-sorting .file-row:not(.is-dragging){transition:transform .22s var(--ease-out)}.file-row.is-dragging{z-index:3;border-color:var(--accent);box-shadow:0 22px 46px -18px rgb(var(--shadow-rgb) / .6);cursor:grabbing;position:relative}.file-row.is-dragging .file-row__grip{cursor:grabbing;color:var(--accent)}.dropzone__drop{border-radius:calc(var(--radius) - 6px);color:var(--accent);font:500 clamp(20px, 2vw, 28px)/1.2 var(--font-display);opacity:0;pointer-events:none;transition:opacity .2s, transform .3s var(--ease-out);place-content:center;justify-items:center;gap:8px;display:grid;position:absolute;inset:12px;transform:scale(.98)}.dropzone__drop b{border:1px solid rgb(var(--accent-rgb) / .5);background:rgb(var(--accent-rgb) / .12);font:600 14px/1.2 var(--font-mono);border-radius:999px;padding:4px 12px}.dropzone__body{transition:opacity .2s}.dropzone.is-over .dropzone__body{opacity:0}.dropzone__drop b:empty{display:none}.dropzone.is-over .dropzone__drop{opacity:1;transform:none}.dropzone.is-taken{animation:dropzone-taken .6s var(--ease-out)}@keyframes dropzone-taken{30%{border-color:var(--accent);box-shadow:0 0 0 6px rgb(var(--accent-rgb) / .14)}}.status--undo{margin-top:12px}.status__undo{margin-left:6px;font-size:14px}.panel__actions{flex-wrap:wrap;gap:10px;display:flex}.result[data-copy]{cursor:copy;transition:border-color .25s,background-color .25s;position:relative}.result[data-copy]:hover{border-color:var(--line-3)}.result dd{justify-content:space-between;align-items:center;gap:8px;display:flex}.result__copy{width:30px;height:30px;color:var(--fg-3);opacity:.55;border-radius:8px;flex:none;place-items:center;transition:opacity .2s,color .2s,background-color .2s;display:grid}.result__copy svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linejoin:round;width:16px;height:16px}.result[data-copy]:hover .result__copy,.result__copy:focus-visible{opacity:1;color:var(--accent);background:rgb(var(--accent-rgb) / .1)}.result.is-copied{border-color:var(--accent);background:rgb(var(--accent-rgb) / .07)}.result.is-copied:after{content:attr(data-copied-label);background:var(--accent);color:var(--on-accent);font:600 11px/1.5 var(--font-mono);animation:copied-in 1.4s var(--ease-out) forwards;border-radius:999px;padding:2px 8px;position:absolute;top:10px;right:12px}@keyframes copied-in{0%{opacity:0;transform:translateY(4px)}15%,80%{opacity:1;transform:none}to{opacity:0}}.tool-tip{color:var(--fg-3);align-items:center;gap:8px;margin-top:16px;font-size:14px;display:flex}.tool-tip svg{fill:none;width:16px;height:16px;stroke:var(--accent);stroke-width:1.6px;stroke-linejoin:round;flex:none}.file-row__meta{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (max-width:560px){.file-row{grid-template-columns:auto auto minmax(0,1fr);row-gap:8px}.file-row>:is(.file-row__grip,img,.file-row__icon){grid-row:span 2;align-self:center}.file-row__actions{grid-column:3;justify-self:start}}@media (pointer:coarse){.file-row__grip{width:34px;padding:10px 0}.result__copy{opacity:1}}@media (prefers-reduced-motion:reduce){.dropzone.is-taken,.result.is-copied:after{animation:none}.file-list.is-sorting .file-row:not(.is-dragging),.dropzone__drop{transition:none}}@media (hover:none) and (pointer:coarse){.keyboard-only{display:none}}
