:root{--font: "Inter", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--bg: #f7f7f5;--surface: #ffffff;--line: #e4e5e9;--line-soft: #eceef2;--navy-900: #0f1e3d;--ink-soft: #5b6472;--ink-faint: #8a919e;--blue-500: #2f5bea;--blue-100: #eef1f7;--green: #1f7a55;--orange: #c9782a;--radius: 8px;--radius-lg: 10px;--shadow: 0 1px 2px rgba(15, 30, 61, .04);--ink: var(--navy-900);--bg-soft: var(--bg);--accent: var(--blue-500);--accent-hover: #2a51d1;--accent-soft: var(--blue-100);--ok: var(--green);--danger: var(--orange);--body: var(--font);--kvartersgul: #ead9a8;--kvartersgul-ljus: #f4edd3;--gata: #c4342b;--natur: #7fa98b;--paper: #ffffff;--sand: var(--bg);--blooc-gron: var(--accent)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:var(--font);background:var(--bg);color:var(--navy-900);font-size:13.5px;font-weight:400;line-height:1.55;-webkit-font-smoothing:antialiased}.shell{min-height:100%;display:flex}.sidebar{width:196px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:22px 12px 16px;position:sticky;top:0;height:100vh}.sidebar .wordmark{display:block;height:16px;color:var(--navy-900);margin:0 0 26px 10px}.sidebar .wordmark svg{height:16px;width:auto;display:block}.sidebar nav{display:flex;flex-direction:column;gap:2px}.navitem{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:var(--radius);color:var(--ink-soft);font-size:13.5px;font-weight:400;cursor:pointer;text-decoration:none;transition:background .12s,color .12s}.navitem svg{width:16px;height:16px;flex-shrink:0}.navitem:hover{background:var(--blue-100);color:var(--navy-900)}.navitem.active{background:var(--blue-100);color:var(--navy-900);font-weight:500}.sidebar .foot{margin-top:auto;padding:0 10px;font-size:12px;color:var(--ink-soft)}.sidebar .foot .org{font-weight:500;color:var(--navy-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .foot .divider{border-top:1px solid var(--line-soft);margin:12px -10px 10px}.sidebar .foot .env{display:flex;justify-content:space-between;align-items:center;color:var(--ink-faint);font-size:11.5px}.envtag{padding:1px 6px;border-radius:5px;font-size:10px;font-weight:600;letter-spacing:.06em;color:var(--orange);border:1px solid var(--line)}.content{flex:1;min-width:0;padding:28px 30px}.content>.inner{max-width:1120px}.stepbar{display:flex;align-items:center;gap:18px;margin:-6px 0 22px;padding-bottom:14px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--ink-soft)}.stepbar .back{display:inline-flex;align-items:center;gap:6px;color:var(--ink-soft);cursor:pointer}.stepbar .back svg{width:14px;height:14px}.stepbar .back:hover{color:var(--navy-900)}.stepbar .steps{display:flex;align-items:center;gap:4px}.stepbar .step{display:inline-flex;align-items:center;gap:7px;padding:4px 8px;border-radius:6px;color:var(--ink-faint)}.stepbar .step .n{width:18px;height:18px;border-radius:50%;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:500;font-family:var(--mono);color:var(--ink-faint);background:var(--surface)}.stepbar .step .n svg{width:11px;height:11px}.stepbar .step.active{color:var(--navy-900);font-weight:500}.stepbar .step.active .n{background:var(--navy-900);border-color:var(--navy-900);color:#fff}.stepbar .step.done{color:var(--ink-soft)}.stepbar .step.done .n{background:var(--green);border-color:var(--green);color:#fff}.stepbar .step.reachable{cursor:pointer}.stepbar .step.reachable:hover{background:var(--blue-100);color:var(--navy-900)}.stepbar .sep{color:var(--line)}.stepbar .meta{margin-left:auto;display:flex;gap:18px;color:var(--ink-soft)}.stepbar .meta b{color:var(--navy-900);font-weight:500;font-family:var(--mono);font-size:12px}h1{font-weight:600;font-size:19px;letter-spacing:-.01em;margin:0 0 6px;color:var(--navy-900)}h2{font-weight:600;font-size:14.5px;margin:0 0 10px;color:var(--navy-900)}.lead{color:var(--ink-soft);margin:0 0 22px;max-width:600px;font-size:13.5px}.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px}.pagehead .lead{margin:0}.pagehead .count{font-size:13px;color:var(--ink-soft);margin-top:2px}.hint{font-size:12px;color:var(--ink-soft);margin-top:10px}.hint .flag{margin-left:8px}.faint{color:var(--ink-faint)}.flag{color:var(--orange);font-weight:500;font-size:12.5px}.ok-text{color:var(--green);font-weight:500}.mono{font-family:var(--mono);font-size:12.5px}button{font-family:var(--font);font-size:13px;font-weight:500;height:36px;padding:0 16px;border-radius:var(--radius);border:1px solid var(--blue-500);background:var(--blue-500);color:#fff;cursor:pointer;line-height:1;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}button:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.ghost{background:var(--surface);color:var(--navy-900);border-color:var(--line)}button.ghost:hover{background:var(--blue-100);border-color:var(--line)}button.sm{height:30px;padding:0 11px;font-size:12.5px}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,.poly:focus-visible,[role=button]:focus-visible,[tabindex="0"]:focus-visible{outline:2px solid var(--blue-500);outline-offset:2px}input[type=text],input[type=password],input[type=number],select{font-family:var(--font);font-size:13.5px;height:36px;padding:0 11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--navy-900);width:100%;transition:border-color .12s}input[type=number]{font-family:var(--mono);font-size:13px}input::placeholder{color:var(--ink-faint)}input:focus,select:focus{outline:none;border-color:var(--blue-500)}input:disabled{background:var(--bg);color:var(--ink-faint)}select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}label{font-size:13px;font-weight:500;display:block;margin:0 0 6px;color:var(--navy-900)}a{color:var(--blue-500)}.row{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:20px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th,.table td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table th{font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);padding-top:11px;padding-bottom:11px}.table tr:last-child td{border-bottom:none}.table td.num,.table th.num{text-align:right}.table td.num{font-family:var(--mono);font-size:12.5px}.table td b{font-weight:500}.table tr.clickable{cursor:pointer;transition:background .12s}.table tr.clickable:hover td,.table tr.clickable:focus td{background:var(--blue-100)}.table .sub{display:block;font-size:12px;color:var(--ink-soft);margin-top:1px}.thumb{width:96px;height:54px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);object-fit:cover;display:block}.thumb.empty{display:flex;align-items:center;justify-content:center;color:var(--ink-faint)}.thumb.empty svg{width:16px;height:16px}.table td.thumbcell{width:112px;padding-top:8px;padding-bottom:8px}.status{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--navy-900);white-space:nowrap}.status .dot{width:7px;height:7px;border-radius:50%;display:inline-block}.status.klar .dot{background:var(--green)}.status.pagar .dot{background:var(--blue-500)}.status.granska .dot{background:var(--orange)}.empty{padding:48px 24px;text-align:center;color:var(--ink-soft)}.empty b{color:var(--navy-900);font-weight:500;display:block;margin-bottom:4px}.empty p{margin:0 0 16px;font-size:13px}.swatch{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:-1px;border:1px solid var(--line)}.badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:500;color:var(--ink-soft);border:1px solid var(--line);vertical-align:middle;margin-left:8px;text-transform:none;letter-spacing:0}.badge.ok{color:var(--green)}.section{margin-top:28px}.section:first-of-type{margin-top:0}.formrow{display:grid;grid-template-columns:260px 1fr minmax(90px,max-content);gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line-soft);font-size:13.5px}.formrow:last-child{border-bottom:none}.formrow .sub{display:block;font-size:12px;color:var(--ink-faint);margin-top:1px}.formrow .val{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12.5px;color:var(--ink-soft)}.formrow .val input{max-width:120px}.formrow .src{font-size:12px;color:var(--ink-faint);text-align:right}.checks{display:flex;flex-wrap:wrap;gap:6px 18px;font-family:var(--font)}.check{display:inline-flex;align-items:center;gap:7px;font-weight:400;font-size:13px;margin:0;cursor:pointer;color:var(--navy-900)}.check input{width:14px;height:14px;accent-color:var(--blue-500);margin:0}.colors{display:flex;flex-wrap:wrap;gap:8px 18px;font-family:var(--font)}.colorpick{display:inline-flex;align-items:center;gap:8px;font-weight:400;font-size:13px;margin:0;cursor:pointer;color:var(--navy-900)}.colorpick input[type=color]{width:24px;height:22px;padding:0;border:1px solid var(--line);border-radius:5px;background:none;cursor:pointer}.section.inactive .card{opacity:.6}.saverow{display:flex;align-items:center;gap:14px;margin-top:14px;font-size:13px}.lock{max-width:360px;margin:14vh auto;padding:30px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow)}.lock .wordmark{height:18px;color:var(--navy-900);margin-bottom:18px}.lock .wordmark svg{height:18px;width:auto;display:block}.lock h1{font-size:17px}.dropzone{border:1.5px dashed var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:44px 24px;text-align:center;cursor:pointer;transition:border-color .12s,background .12s}.dropzone:hover,.dropzone.drag{border-color:var(--blue-500);background:var(--blue-100)}.dropzone .dz-icon{width:40px;height:40px;border-radius:var(--radius);margin:0 auto 14px;background:var(--blue-100);color:var(--blue-500);display:flex;align-items:center;justify-content:center}.dropzone .dz-icon svg{width:20px;height:20px}.dropzone.drag .dz-icon,.dropzone:hover .dz-icon{background:var(--surface)}.dropzone p{margin:6px 0 0;color:var(--ink-soft);font-size:12.5px}.dropzone .big{font-weight:600;font-size:14px;color:var(--navy-900)}.mapwrap{position:relative;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.mapwrap img{display:block;width:100%;height:auto}.mapwrap svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.poly{fill:#2f5bea00;stroke:var(--blue-500);stroke-width:4;cursor:pointer;transition:fill .12s}.poly:hover{fill:#2f5bea2e}.poly.selected{fill:#2f5bea52}.poly.analyzed{stroke:var(--green);fill:#1f7a5524}.poly.analyzed:hover,.poly.analyzed.selected{fill:#1f7a5547}.polyinfo{font-size:13px;padding:9px 14px;display:inline-flex;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);margin-top:12px}.polyinfo .num{font-family:var(--mono);font-size:12.5px}.rulecard{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden;box-shadow:var(--shadow)}.rulecard .head{padding:11px 16px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;background:var(--bg)}.rulecard .head .label{font-family:var(--mono);font-size:13px;font-weight:500}.rulecard .head .src{font-size:12px;color:var(--ink-faint)}.rulerow{display:grid;grid-template-columns:240px 1fr minmax(90px,max-content);gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line-soft);font-size:13.5px}.rulerow:last-child{border-bottom:none}.rulerow .val{font-family:var(--mono);font-size:13px}.rulerow .val.text{font-family:var(--font);font-size:13.5px;line-height:1.6}.rulerow .val .code{font-family:var(--mono);font-weight:500}.rulerow .val .faint{color:var(--ink-faint)}.rulerow input{max-width:140px}.rulerow .src{font-size:12px;color:var(--ink-faint);text-align:right;overflow-wrap:anywhere}.notes{margin-top:16px;padding:12px 16px;background:var(--blue-100);border-radius:var(--radius);font-size:13px;color:var(--ink-soft)}.notes b{color:var(--navy-900);font-weight:500}.modelpick{display:flex;gap:8px;flex-wrap:wrap}.chip{font-family:var(--mono);font-size:12.5px;height:32px;padding:0 11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;color:var(--ink-soft);font-weight:400}.chip:hover{border-color:var(--ink-soft);background:var(--bg);color:var(--navy-900)}.chip.on{border-color:var(--blue-500);background:var(--blue-100);color:var(--blue-500);font-weight:500}.configgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:22px}.configcard{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;overflow:hidden;transition:border-color .12s;box-shadow:var(--shadow)}.configcard:hover,.configcard.selected{border-color:var(--blue-500)}.configcard img{width:100%;display:block;border-bottom:1px solid var(--line-soft)}.configcard .body{padding:12px 16px}.configcard .name{font-weight:600;font-size:13.5px}.configcard .nums{font-family:var(--mono);font-size:12px;color:var(--ink-soft);margin-top:6px;display:flex;gap:14px}.configcard .nums b{color:var(--navy-900);font-weight:500}.frontpicker{width:340px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);display:block}.editor{display:flex;gap:22px;align-items:flex-start}.editor svg{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);touch-action:none;flex:1;min-width:0}.sidepanel{width:280px;flex-shrink:0}.summary{font-size:13px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.summary div{display:flex;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--line-soft)}.summary div:last-child{border-bottom:none}.summary div span{color:var(--ink-soft)}.summary div b{font-family:var(--mono);font-weight:500;font-size:12.5px}.viol{margin-top:14px;padding:10px 14px;font-size:13px;color:var(--orange);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.viol b{font-weight:500}.viol.ok{color:var(--green)}.house{cursor:grab}.house:active{cursor:grabbing}.house rect{stroke:var(--navy-900);stroke-width:.25}.house.invalid rect{stroke:var(--orange);stroke-width:.6;fill:#e8b4af!important}.error{padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--orange);font-size:13.5px;margin:16px 0}.spin{color:var(--ink-soft);font-size:13.5px}.spin:after{content:"…";animation:dots 1.2s steps(4) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}@media (max-width: 860px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;align-items:center;gap:8px;padding:10px 12px;border-right:none;border-bottom:1px solid var(--line)}.sidebar .wordmark{margin:0 12px 0 0}.sidebar nav{flex-direction:row}.sidebar .foot{display:none}.content{padding:20px}.editor{flex-direction:column}.sidepanel{width:100%}}.palette{display:flex;flex-direction:column;gap:6px;margin-top:10px}.palchip{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:12.5px;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:grab;-webkit-user-select:none;user-select:none}.palchip:active{cursor:grabbing}.palchip:hover{border-color:var(--blue-500);background:var(--blue-100)}.palchip .swatch{width:22px;height:14px;margin:0}.configcard.blank .blankface{display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:300;color:var(--ink-faint);border-bottom:1px solid var(--line-soft);background:var(--bg);aspect-ratio:12 / 10}.configcard.blank:hover .blankface{color:var(--blue-500);background:var(--blue-100)}.configcard.blank .nums{font-family:var(--font);font-size:12.5px}.sidebar .foot .who{display:flex;align-items:center;gap:9px;margin-top:8px;min-width:0}.sidebar .foot .who>span{display:flex;flex-direction:column;min-width:0;line-height:1.3}.sidebar .foot .who .name{font-size:12.5px;color:var(--navy-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .foot .who .roll{font-size:11px;color:var(--ink-faint)}.lock .cl-rootBox,.lock .cl-card{width:100%}.lock.wide{max-width:440px}.history{font-size:12.5px}.history .row-h{display:grid;grid-template-columns:150px 120px 1fr;gap:12px;padding:9px 16px;border-bottom:1px solid var(--line-soft);align-items:baseline}.history .row-h:last-child{border-bottom:none}.history .when{color:var(--ink-faint);font-family:var(--mono);font-size:11.5px}.history .who{color:var(--navy-900);font-weight:500}.history .what{color:var(--ink-soft)}.history .what code{font-family:var(--mono);font-size:11.5px;color:var(--navy-900)}.poly.part{stroke-width:2.5;stroke-dasharray:14 6 3 6}.poly.outline{pointer-events:none;fill:none;stroke-width:4}.poly.outline.selected{fill:#2f5bea38}.poly.outline.analyzed{stroke:var(--green)}.docname{display:inline-flex;align-items:center;gap:8px;font-weight:500}.docname svg{width:15px;height:15px;color:var(--ink-soft);flex-shrink:0}.table td select{width:auto;min-width:170px;height:32px;font-size:13px}.notice{padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:13px;color:var(--ink-soft)}.notice.warn{color:var(--orange);border-color:var(--orange)}.batchbar{display:flex;align-items:center;gap:14px;margin-top:12px;flex-wrap:wrap}.progress{position:relative;flex:1;min-width:240px;height:30px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}.progress .bar{position:absolute;inset:0 auto 0 0;background:var(--blue-100);transition:width .4s}.progress span{position:relative;display:block;line-height:28px;padding:0 12px;font-size:12.5px;color:var(--navy-900)}.ranklabel{display:inline-flex;align-items:center;gap:8px;font-weight:400;font-size:13px;color:var(--ink-soft);margin:0}.poly.capacity{stroke:var(--blue-500)}.configcard .nums.kalkyl{margin-top:4px;color:var(--ink-soft)}.configcard .name .badge{margin-left:8px}.admin-detail{display:grid;grid-template-columns:1.4fr 1fr;gap:24px}.admin-detail h3{font-size:13px;font-weight:600;margin:0 0 8px}.table.compact td{padding:8px 10px;font-size:13px}@media (max-width: 860px){.admin-detail{grid-template-columns:1fr}}
