:root{--ink:#121110;--ink2:#1c1a17;--ink3:#2a2620;--ivory:#f7f2e8;--paper:#fffdf8;--line:#e6dcc6;--gold:#c4a05a;--gold2:#a8843c;--goldsoft:#f3e8cc;--tx:#26221c;--mu:#7b7466;--ok:#2f7d4f;--okbg:#e5f2e9;--warn:#a8680f;--warnbg:#fbefd8;--bad:#b3261e;--badbg:#fbe5e2;--r:14px;--sh:0 1px 2px #1a14080d,0 6px 18px #1a14080f;--sw:252px;--sbc:76px;--top:60px;--bn:64px}
[hidden]{display:none!important}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:14px/1.45 Inter,system-ui,sans-serif;background:var(--ivory);color:var(--tx);-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;font-weight:600}.serif,h1.t{font-family:'Cormorant Garamond',Georgia,serif;letter-spacing:.06em}
button{font:inherit;cursor:pointer}a{color:inherit}
:focus-visible{outline:2px solid var(--gold2);outline-offset:2px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
svg.ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
/* ---- shell ---- */
.shell{display:flex;min-height:100vh}
.side{position:fixed;inset:0 auto 0 0;width:var(--sw);background:linear-gradient(180deg,var(--ink),var(--ink2));color:#d9d2c3;display:flex;flex-direction:column;z-index:40;transition:width .2s,transform .25s;border-right:1px solid #000}
.side .brand{display:flex;align-items:center;gap:10px;padding:18px 16px 14px;min-height:76px}
.logo-chip{background:var(--paper);border-radius:12px;padding:6px 10px;display:flex;align-items:center;justify-content:center;min-height:42px;max-width:100%}
.logo-chip img{max-height:38px;max-width:150px;display:block;object-fit:contain}
.brand-text{font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:21px;letter-spacing:.16em;font-weight:700;white-space:nowrap}
.side nav{flex:1;overflow:auto;padding:4px 10px 14px}
.grp{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#7d7566;padding:14px 10px 6px}
.nav{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#cfc7b6;text-decoration:none;margin:2px 0;position:relative;white-space:nowrap}
.nav:hover{background:#ffffff0f;color:#fff}.nav.on{background:linear-gradient(90deg,#c4a05a26,#c4a05a0a);color:var(--gold)}
.nav.on::before{content:'';position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--gold)}
.side .foot{padding:10px;border-top:1px solid #ffffff14}
.collapse-btn{display:flex;width:100%;align-items:center;gap:12px;background:none;border:0;color:#9d9585;padding:9px 12px;border-radius:10px}.collapse-btn:hover{background:#ffffff0f;color:#fff}
.main{flex:1;margin-left:var(--sw);min-width:0;transition:margin .2s}
body.sbc .side{width:var(--sbc)}body.sbc .main{margin-left:var(--sbc)}
body.sbc .lbl,body.sbc .grp,body.sbc .brand-text,body.sbc .logo-chip{display:none}body.sbc .side .brand{justify-content:center}body.sbc .nav,body.sbc .collapse-btn{justify-content:center}
body.sbc .side .brand::after{content:'A';font-family:'Cormorant Garamond',serif;font-size:28px;color:var(--gold);font-weight:700}
.top{position:sticky;top:0;z-index:30;height:var(--top);background:var(--ink);color:#fff;display:none;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid #000}
.top .ttl{flex:1;text-align:center;color:var(--gold);font-family:'Cormorant Garamond',serif;letter-spacing:.16em;font-size:20px;font-weight:700;display:flex;justify-content:center}
.top .logo-chip{padding:3px 8px;min-height:34px}.top .logo-chip img{max-height:28px}
.icon-btn{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;background:none;border:0;color:inherit;border-radius:10px}.icon-btn:hover{background:#ffffff14}
.desk-top{display:flex;align-items:center;justify-content:space-between;padding:14px 28px 0;color:var(--mu);font-size:13px}
.page{padding:20px 28px calc(40px + env(safe-area-inset-bottom));max-width:1320px;margin:0 auto}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.ph h1{font-family:'Cormorant Garamond',serif;font-size:34px;letter-spacing:.04em;line-height:1.1;color:var(--ink)}.ph p{margin:4px 0 0;color:var(--mu)}
.ph .acts{display:flex;gap:8px;flex-wrap:wrap}
.scrim{position:fixed;inset:0;background:#0009;z-index:35;display:none}
.bn{display:none}
/* ---- components ---- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--sh);margin-bottom:16px;min-width:0}
.card>h2,.card .ch h2{font-size:16px;margin-bottom:12px}.ch{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}.ch h2{margin:0}
.grid{display:grid;gap:14px;margin-bottom:16px}.k6{grid-template-columns:repeat(6,1fr)}.k4{grid-template-columns:repeat(4,1fr)}.k3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.grid>.card{margin:0}
.kpi{display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}
.kpi .kl{font-size:12px;color:var(--mu);display:flex;align-items:center;gap:8px}.kpi .kl .ic{color:var(--gold2);width:16px;height:16px}
.kpi b{font-size:24px;font-weight:600;letter-spacing:-.01em;color:var(--ink);line-height:1.1}.kpi small{color:var(--mu);font-size:11.5px}
.kpi.gold{background:linear-gradient(135deg,var(--ink),var(--ink3));border-color:#000;color:#e9e1cf}.kpi.gold b{color:var(--gold)}.kpi.gold .kl,.kpi.gold small{color:#b5ad9b}
.hero{background:radial-gradient(900px 260px at 85% -40%,#c4a05a40,transparent),linear-gradient(120deg,var(--ink),var(--ink3));color:var(--gold);border-radius:var(--r);padding:26px 28px;margin-bottom:16px;display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;border:1px solid #000}
.hero h2{font-family:'Cormorant Garamond',serif;font-size:32px;letter-spacing:.14em;font-weight:700}.hero p{margin:6px 0 0;color:#cfc6b0}.hero .acts{display:flex;gap:8px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:10px;border:1px solid transparent;font-weight:600;background:linear-gradient(180deg,#d0ad68,var(--gold));color:#1b1608;white-space:nowrap}
.btn:hover{filter:brightness(1.05)}.btn:disabled,.btn[aria-busy=true]{opacity:.55;cursor:not-allowed}
.btn.ghost{background:var(--paper);border-color:var(--line);color:var(--tx)}.btn.ghost:hover{border-color:var(--gold);color:var(--gold2)}
.btn.dark{background:var(--ink);color:var(--gold);border-color:#000}.btn.danger{background:var(--bad);color:#fff}.btn.sm{min-height:32px;padding:0 11px;font-size:12.5px;border-radius:8px}.btn.block{width:100%}
.btn.onink{background:#ffffff14;color:#f1e9d4;border-color:#ffffff30}
.spin{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:600;background:#eee9dc;color:#5d5648;white-space:nowrap}
.badge.ok{background:var(--okbg);color:var(--ok)}.badge.warn{background:var(--warnbg);color:var(--warn)}.badge.bad{background:var(--badbg);color:var(--bad)}.badge.gold{background:var(--goldsoft);color:var(--gold2)}
.f{margin-bottom:12px;min-width:0}.f label{display:block;font-size:12px;font-weight:600;color:#5d5648;margin-bottom:5px}.f .hint{font-size:11.5px;color:var(--mu);margin-top:4px}.f .err{font-size:12px;color:var(--bad);margin-top:4px}
input,select,textarea{width:100%;min-height:42px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff;color:var(--tx)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #c4a05a30}
input[type=file]{padding:8px}textarea{min-height:76px;resize:vertical}input:disabled,select:disabled{background:#f3efe5;color:var(--mu)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.row .f{margin-bottom:0}
.bar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.bar .f{margin:0;flex:1;min-width:140px}.bar .f.grow{flex:2;min-width:200px}
.search{position:relative}.search .ic{position:absolute;left:12px;top:12px;color:var(--mu)}.search input{padding-left:38px}
.seg{display:inline-flex;background:#ece5d3;border-radius:12px;padding:4px;gap:2px;flex-wrap:wrap;max-width:100%}.seg button{border:0;background:none;padding:8px 14px;border-radius:9px;color:#5d5648;font-weight:600;min-height:36px}.seg button.on{background:var(--ink);color:var(--gold);box-shadow:var(--sh)}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse}th{font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--mu);font-weight:600;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:#faf6ea}
td{padding:11px 12px;border-bottom:1px solid #efe7d3;vertical-align:middle}tr:last-child td{border-bottom:0}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fbf7ec}
td.act{white-space:nowrap;text-align:right}td.act .btn{margin-left:4px}
.thumb{width:40px;height:40px;border-radius:10px;object-fit:cover;background:var(--goldsoft);display:inline-flex;align-items:center;justify-content:center;color:var(--gold2);flex:none}
.nm{display:flex;align-items:center;gap:10px;min-width:0}.nm b{display:block;font-weight:600}.nm small{color:var(--mu)}
.empty{text-align:center;padding:36px 16px;color:var(--mu)}.empty .ic{width:34px;height:34px;color:var(--gold);margin-bottom:8px}.empty h3{color:var(--tx);font-size:16px;margin-bottom:4px}.empty .btn{margin-top:12px}
.skel{height:14px;border-radius:7px;background:linear-gradient(90deg,#efe8d6,#f8f3e6,#efe8d6);background-size:200% 100%;animation:sk 1.2s infinite;margin:10px 0}@keyframes sk{to{background-position:-200% 0}}
.note{display:flex;gap:10px;padding:11px 14px;border-radius:10px;background:var(--goldsoft);color:#5d4a1c;font-size:13px;margin-bottom:14px;align-items:flex-start}.note.bad{background:var(--badbg);color:var(--bad)}.note.warn{background:var(--warnbg);color:var(--warn)}.note.ok{background:var(--okbg);color:var(--ok)}
.bars{display:flex;align-items:flex-end;gap:10px;height:150px;padding-top:8px}.bars>div{flex:1;max-width:84px;border-radius:7px 7px 0 0;background:linear-gradient(180deg,var(--gold),var(--gold2));position:relative;min-height:3px}.bars>div.neg{background:var(--bad)}
.bars small{position:absolute;bottom:-34px;left:-6px;right:-6px;text-align:center;font-size:10.5px;color:var(--mu);line-height:1.2}
.steps{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.steps span{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--mu);padding:6px 12px;border-radius:99px;background:#ece5d3}.steps span i{font-style:normal;width:20px;height:20px;border-radius:50%;background:#d9cfb6;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.steps span.on{background:var(--ink);color:var(--gold)}.steps span.on i{background:var(--gold);color:var(--ink)}.steps span.done i{background:var(--ok)}
.sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.sum div{background:#faf5e6;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.sum small{display:block;color:var(--mu);font-size:11.5px}.sum b{font-size:17px}.sum div.hi{background:var(--ink);border-color:#000}.sum div.hi small{color:#b5ad9b}.sum div.hi b{color:var(--gold)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:13px}.kv dt{color:var(--mu)}.kv dd{margin:0;font-weight:600}
details.fl>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;font-weight:600}details.fl>summary::-webkit-details-marker{display:none}
/* ---- toast + dialog ---- */
#toasts{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;width:min(92vw,440px);pointer-events:none}
.toast{background:var(--ink);color:#fff;padding:12px 16px;border-radius:12px;box-shadow:0 10px 30px #0004;border-left:4px solid var(--gold);pointer-events:auto;font-size:13.5px}.toast.ok{border-color:#4caf7a}.toast.err{border-color:#e5645a;background:#3a1512}
.dscrim{position:fixed;inset:0;background:#0b0905b8;z-index:80;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(2px)}
.dlg{background:var(--paper);border-radius:18px;width:100%;max-width:560px;max-height:min(92vh,880px);display:flex;flex-direction:column;box-shadow:0 30px 80px #0007;border:1px solid var(--line)}.dlg.wide{max-width:860px}
.dlg header{padding:20px 22px 6px}.dlg header h2{font-family:'Cormorant Garamond',serif;font-size:26px;letter-spacing:.03em}.dlg header p{margin:4px 0 0;color:var(--mu)}
.dlg .body{padding:12px 22px;overflow:auto;flex:1}.dlg footer{padding:14px 22px 20px;display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--line);flex-wrap:wrap}
.dlg .derr{background:var(--badbg);color:var(--bad);padding:10px 12px;border-radius:10px;margin-top:10px;font-size:13px}
.dlg.danger header h2{color:var(--bad)}
.consq{background:#faf5e6;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:8px 0}
.login{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.lbrand{background:radial-gradient(700px 400px at 20% 10%,#c4a05a30,transparent),linear-gradient(160deg,var(--ink),#000);color:#e8dfca;display:flex;flex-direction:column;justify-content:space-between;padding:48px;position:relative;overflow:hidden}
.lbrand::after{content:'';position:absolute;right:-120px;bottom:-120px;width:420px;height:420px;border:1px solid #c4a05a40;border-radius:50%;box-shadow:0 0 0 40px #c4a05a0d,0 0 0 90px #c4a05a08}
.lbrand h1{font-family:'Cormorant Garamond',serif;font-size:46px;letter-spacing:.14em;color:var(--gold);line-height:1.1;margin:22px 0 10px}.lbrand p{max-width:380px;color:#b9b19e;font-size:15px}
.lform{display:flex;align-items:center;justify-content:center;padding:32px}.lcard{width:100%;max-width:400px}
.lcard h2{font-family:'Cormorant Garamond',serif;font-size:34px;color:var(--ink);letter-spacing:.03em}.lcard>p{color:var(--mu);margin:4px 0 22px}
.pw{position:relative}.pw button{position:absolute;right:4px;top:3px;width:36px;height:36px;border:0;background:none;color:var(--mu);border-radius:8px}.pw input{padding-right:44px}
.offl{display:none;background:var(--bad);color:#fff;text-align:center;padding:7px;font-size:13px}
/* ---- responsive ---- */
@media(max-width:1180px){.k6{grid-template-columns:repeat(3,1fr)}.k4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){
 .side{transform:translateX(-100%);width:min(84vw,300px)!important}.side.open{transform:none}body.sbc .lbl,body.sbc .grp,body.sbc .brand-text,body.sbc .logo-chip{display:flex}body.sbc .grp{display:block}body.sbc .side .brand::after{display:none}body.sbc .nav{justify-content:flex-start}.collapse-btn{display:none}
 .main,body.sbc .main{margin-left:0}.top{display:flex}.desk-top{display:none}.scrim.on{display:block}
 .page{padding:16px 14px calc(var(--bn) + 28px + env(safe-area-inset-bottom))}.ph h1{font-size:28px}
 .bn{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--ink);border-top:1px solid #000;padding-bottom:env(safe-area-inset-bottom)}
 .bn a,.bn button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:var(--bn);color:#a89f8b;font-size:11px;text-decoration:none;background:none;border:0}.bn .on{color:var(--gold)}
 #toasts{bottom:calc(var(--bn) + 14px + env(safe-area-inset-bottom))}
 .login{grid-template-columns:1fr}.lbrand{padding:28px 24px 30px;min-height:0}.lbrand h1{font-size:34px;margin:14px 0 6px}.lbrand p{font-size:14px}.lbrand::after{display:none}.lform{padding:24px 18px 40px;align-items:flex-start}
}
@media(max-width:720px){
 .k6,.k4,.k3,.g2{grid-template-columns:repeat(2,1fr)}.g2.stack{grid-template-columns:1fr}.kpi b{font-size:20px}.hero{padding:20px}.hero h2{font-size:26px}
 .rt thead{display:none}.rt,.rt tbody,.rt tr,.rt td{display:block;width:100%}.rt tr{border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:6px 4px;background:#fff}
 .rt td{display:flex;justify-content:space-between;gap:12px;align-items:center;border:0;padding:7px 12px;text-align:right}.rt td::before{content:attr(data-label);color:var(--mu);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;text-align:left;flex:none}
 .rt td.act{justify-content:flex-end;flex-wrap:wrap}.rt td.act::before,.rt td[data-label=""]::before{display:none}.rt td .nm{text-align:left}.rt tbody tr:hover{background:#fff}
 .tw{overflow:visible}
 .dscrim{align-items:flex-end;padding:0}.dlg{max-width:none;border-radius:18px 18px 0 0;max-height:94vh}.dlg footer .btn{flex:1}
 .bars small{font-size:9.5px}
}
@media(max-width:420px){.k6,.k4,.k3,.g2{grid-template-columns:1fr 1fr}.btn{padding:0 12px}.ph .acts .btn{flex:1}}
@media print{.side,.top,.bn,.desk-top,.noprint,.btn,.scrim,#toasts,.offl,.collapse-btn{display:none!important}.main{margin:0!important}body{background:#fff}.page{padding:0;max-width:none}.card{box-shadow:none;break-inside:avoid}.rt thead{display:table-header-group!important}.rt,.rt tbody{display:table!important}.rt tr{display:table-row!important;border:0}.rt td{display:table-cell!important}.rt td::before{display:none}.pr-only{display:block!important}}
.pr-only{display:none}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* ---- cost lines: responsive cards so the Item name always has room ---- */
.costline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#faf5e6;margin-bottom:10px}
.costline .f{margin:0}.costline .item,.costline .mat,.costline .kind,.costline .rm,.costline .err{grid-column:1/-1}
.costline .item textarea{font-weight:600;resize:none;overflow:hidden;min-height:42px;line-height:1.35;padding-top:9px;padding-bottom:9px}.costline select{text-overflow:ellipsis}
.costline output{display:flex;align-items:center;min-height:42px;padding:0 12px;background:#fff;border:1px solid var(--line);border-radius:10px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.costline .rm .btn{width:100%}.costline .err{margin:0}
@media(min-width:620px) and (max-width:1179px){.costline{grid-template-columns:repeat(4,minmax(0,1fr))}.costline .item,.costline .mat{grid-column:span 2}.costline .kind{grid-column:span 2}.costline .rm,.costline .err{grid-column:1/-1}.costline .rm .btn{width:auto}}
@media(min-width:1180px){.costline{grid-template-columns:minmax(200px,2.2fr) minmax(170px,1.6fr) minmax(120px,1fr) minmax(80px,.7fr) minmax(70px,.7fr) minmax(90px,.9fr) minmax(110px,1fr) auto;align-items:end;padding:10px 12px}.costline .item,.costline .mat,.costline .kind,.costline .rm,.costline .err{grid-column:auto}.costline .err{grid-column:1/-1}.costline .rm .btn{width:auto}}
/* phones: 16px controls = readable text and no iOS focus-zoom */
@media(max-width:720px){input,select,textarea{font-size:16px}}
/* ---- global search ---- */
.gs{position:relative;flex:1;max-width:620px;margin:0 20px}
.gs-box{display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:0 6px 0 12px;min-height:42px;box-shadow:var(--sh)}
.gs-box:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px #c4a05a30}.gs-box .ic{color:var(--mu)}
.gs-box input{border:0;box-shadow:none!important;background:none;min-height:40px;padding:0 4px;flex:1;min-width:0}.gs-box input::-webkit-search-cancel-button{display:none}
.gs-box kbd{font:11px Inter,sans-serif;color:var(--mu);border:1px solid var(--line);border-radius:6px;padding:1px 6px;background:#faf5e6}
.gs-clear{border:0;background:none;color:var(--mu);width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.gs-clear:hover{background:#efe8d6}
.gs-panel{position:absolute;left:0;right:0;top:calc(100% + 8px);background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px #0003;max-height:min(72vh,640px);overflow:auto;z-index:60;padding:6px}
.gs-g{padding:4px 0}.gs-g+.gs-g{border-top:1px solid #efe7d3}.gs-h{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mu);font-weight:600;padding:8px 10px 4px}.gs-h .ic{width:15px;height:15px;color:var(--gold2)}
.gs-i{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:9px 10px;border-radius:10px;text-decoration:none;color:var(--tx);cursor:pointer;align-items:center}.gs-i .gs-t{font-weight:600;overflow-wrap:anywhere}.gs-i .gs-s{grid-column:1;color:var(--mu);font-size:12.5px;overflow-wrap:anywhere}.gs-i .badge{grid-row:1/3;grid-column:2;align-self:center}
.gs-i.on,.gs-i:hover{background:var(--goldsoft)}
.gs-msg{display:flex;gap:12px;align-items:flex-start;padding:16px 14px;color:var(--mu)}.gs-msg b{color:var(--tx)}.gs-msg .ic{width:22px;height:22px;color:var(--gold2);flex:none}.gs-msg.err .ic{color:var(--bad)}.gs-msg.hint,.gs-msg.load{align-items:center}
.gs-more{padding:6px 10px;color:var(--mu);font-size:12px}.gs-panel.busy{opacity:.6;transition:opacity .15s}
.gs-ov{position:fixed;inset:0;background:var(--ivory);z-index:90;display:flex;flex-direction:column}
.gs-ovh{display:flex;align-items:center;gap:8px;padding:10px 12px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--ink);border-bottom:1px solid #000}
.gs-ovh .gs-box{flex:1}.gs-ovh .icon-btn{color:#f1e9d4}
.gs-ovb{flex:1;overflow:auto;padding:8px 10px calc(20px + env(safe-area-inset-bottom))}.gs-ovb .gs-panel{position:static;border:0;box-shadow:none;max-height:none;background:none;padding:0;overflow:visible}
@keyframes flashrow{0%,60%{box-shadow:0 0 0 3px #c4a05a;background:var(--goldsoft)}100%{box-shadow:var(--sh)}}.flash{animation:flashrow 2.6s ease-out}
.btn.danger.ghost{background:var(--paper);color:var(--bad);border-color:#e6b9b4}.btn.danger.ghost:hover{background:var(--badbg)}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.linkbtn:hover b{color:var(--gold2);text-decoration:underline}
@media(max-width:900px){.gs{display:none}}

/* saved costings: five actions (View, Print, Edit, Duplicate, Delete) sit in a wrapping group so they never scroll off-screen */
.sc th,.sc td{padding-left:8px;padding-right:8px}.sc th{white-space:normal}
.sc td.act{white-space:normal}.actrow{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;min-width:210px;max-width:250px;margin-left:auto}
@media(max-width:720px){.actrow{max-width:none;min-width:0;width:100%}}
/* ---- duplicate-name warning (warning only) ---- */
.dupe{margin-top:8px;border:1px solid #e8cf99;background:var(--warnbg);color:#6e4a0c;border-radius:10px;padding:10px 12px;font-size:13px}
.dupe-h{display:flex;align-items:center;gap:6px;font-weight:700;margin-bottom:4px}.dupe-h .ic{width:16px;height:16px}
.dupe-i{display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:7px 0;border-top:1px dashed #e8cf99}.dupe-i>span{min-width:0;overflow-wrap:anywhere}.dupe-i small{display:block;color:var(--mu);font-size:12px}.dupe-i em{font-style:normal;color:var(--warn)}
.dupe-m,.dupe-t{margin-top:6px;font-size:12px;color:var(--mu)}
.toast.warn{border-color:var(--gold);background:#2a2113}.toast-act{margin-left:10px;background:var(--gold);color:#1b1608;border:0;border-radius:8px;padding:5px 10px;font-weight:600;font-size:12.5px}

/* partial-name suggestions (neutral, not an alarm) */
.dupe.sim{background:#f6f1e3;border-color:var(--line);color:var(--tx)}.dupe.sim .dupe-h .ic{color:var(--gold2)}.dupe.sim+.dupe.sim{margin-top:8px}
.dupe-list{max-height:min(260px,36vh);overflow:auto;-webkit-overflow-scrolling:touch}.dupe.sim mark{background:#f0dba8;color:inherit;border-radius:3px;padding:0 1px}.dupe.sim em{font-style:normal;color:var(--mu)}
.dupe:not(.sim)+.dupe.sim{margin-top:8px}
