html,body{height:100%;overflow:hidden}.top{height:56px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--line);background:var(--card);position:relative;z-index:5}
.logo{display:flex;gap:9px;align-items:center;font-size:15px;margin-right:6px}.mark{width:20px;height:20px;border-radius:6px;background:var(--mark);box-shadow:inset 0 0 0 4.5px var(--card)}
.cty{display:flex;gap:2px;padding:3px;background:var(--bg2);border-radius:10px;border:1px solid var(--line)}.cty button{border:0;background:none;height:28px;padding:0 10px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;color:var(--fg2);display:flex;gap:6px;align-items:center}
.cty button.on{background:var(--card);color:var(--fg);box-shadow:var(--sh)}.cty button.lock{opacity:.4}
.srch{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;border-radius:10px;background:var(--bg2);border:1px solid var(--line);width:min(340px,30vw);color:var(--fg3)}.srch input{border:0;background:none;outline:none;width:100%;color:var(--fg)}
.sp{flex:1}.bell{position:relative}.bell i{position:absolute;top:3px;right:4px;min-width:16px;height:16px;border-radius:8px;background:var(--bad);color:#fff;font:600 10px/16px var(--font);font-style:normal;display:none}.bell i.on{display:block}
.main{display:flex;height:calc(100% - 56px);position:relative}
.side{width:300px;flex:none;border-right:1px solid var(--line);background:var(--card);overflow:auto;display:flex;flex-direction:column}
.sh{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 6px}.fs{padding:12px 18px}.fs label{display:block;font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fg3);margin-bottom:9px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.two .input{padding:0 8px;font-size:13px}
.sfoot{margin-top:auto;position:sticky;bottom:0;display:flex;gap:8px;padding:14px 18px;border-top:1px solid var(--line);background:var(--card)}
.dd{position:relative}.menu{display:none;position:absolute;bottom:42px;right:0;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--sh2);padding:4px;min-width:120px}.menu.on{display:block}.menu a{display:block;padding:8px 10px;border-radius:7px;cursor:pointer}.menu a:hover{background:var(--bg2)}
.mapwrap{flex:1;position:relative;min-width:0}#map{position:absolute;inset:0}
.banner{position:absolute;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:12px;align-items:center;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(12px);border:1px solid var(--line2);border-radius:12px;padding:8px 8px 8px 14px;box-shadow:var(--sh);font-size:13px;z-index:3;max-width:92%}
.legend{position:absolute;top:14px;left:14px;display:flex;flex-direction:column;gap:5px;background:color-mix(in srgb,var(--card) 86%,transparent);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:12px;box-shadow:var(--sh);z-index:2}
.legend span{display:flex;align-items:center;gap:8px}.legend i{width:9px;height:9px;border-radius:50%}
.listp{position:absolute;left:14px;bottom:14px;width:400px;max-height:46%;display:flex;flex-direction:column;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh2);z-index:3;transition:max-height .3s ease}
.listp.min{max-height:50px}.listp.min .rows{display:none}.lh{display:flex;align-items:center;gap:6px;padding:12px 14px;border-bottom:1px solid var(--line)}.lh b{font:600 15px var(--font-head)}
.rows{overflow:auto;padding:4px}.r{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:10px;cursor:pointer;transition:background .12s}.r:hover,.r.on{background:var(--bg2)}
.r .d{width:9px;height:9px;border-radius:50%;margin-top:5px}.r .t{font-weight:550;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.r .s{font-size:12px;color:var(--fg3);margin-top:2px}.r .m{font-size:12px;color:var(--fg3);text-align:right;white-space:nowrap}
.more{display:block;margin:6px auto 10px}.empty{padding:30px;text-align:center;color:var(--fg3)}
.detail{width:0;flex:none;overflow:hidden;background:var(--card);border-left:1px solid var(--line);transition:width .28s cubic-bezier(.2,.8,.2,1)}.detail.on{width:400px;overflow:auto}
.dh{padding:20px 22px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);z-index:1}.dh h2{font-size:20px;line-height:1.25;margin:10px 0 6px}.dx{position:absolute;right:14px;top:14px}
.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:7px;font-size:12px;font-weight:600;background:var(--bg2);color:var(--fg2)}
.st-granted{background:rgba(13,148,136,.1);color:var(--acc)}.st-started{background:rgba(245,158,11,.12);color:#d97706}.st-completed{background:rgba(16,185,129,.12);color:#059669}.st-refused,.st-cancelled{background:rgba(239,68,68,.1);color:var(--bad)}
.orig{font-size:12.5px;color:var(--fg3);margin-top:6px}.orig b{font-weight:600}
.kv{display:grid;grid-template-columns:140px 1fr;gap:0;padding:8px 22px}.kv div{padding:9px 0;border-bottom:1px solid var(--line);font-size:13.5px}.kv div:nth-child(odd){color:var(--fg3)}
.dsec{padding:16px 22px 4px;font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fg3)}
.timeline{padding:6px 22px 8px;display:flex;gap:0}.tl{flex:1;position:relative;padding-top:16px;font-size:12px;color:var(--fg3)}.tl:before{content:'';position:absolute;top:5px;left:0;right:0;height:2px;background:var(--line2)}.tl:after{content:'';position:absolute;top:1px;left:0;width:10px;height:10px;border-radius:50%;background:var(--line2)}
.tl.ok:before,.tl.ok:after{background:var(--acc)}.tl b{display:block;color:var(--fg);font-weight:550}
.dact{display:flex;gap:8px;padding:18px 22px 26px}
.maplibregl-popup-content{background:var(--card);color:var(--fg);border-radius:10px;box-shadow:var(--sh2);padding:8px 12px;font:13px var(--font)}.maplibregl-popup-tip{border-top-color:var(--card)!important}
.maplibregl-ctrl-group{background:var(--card)!important;border:1px solid var(--line)!important;box-shadow:var(--sh)!important;border-radius:10px!important}
[data-theme=dark] .maplibregl-ctrl-group button span{filter:invert(1)}
.wl{display:grid;gap:8px;margin:14px 0}.wi{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px}
.ni{padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px}.ni.unread{border-color:var(--acc)}
.plans{display:grid;gap:8px;margin:14px 0}.pl{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px}
.mob{display:none}
@media(max-width:900px){.srch{display:none}.mob{display:inline-flex}.side{position:absolute;left:0;top:0;bottom:0;z-index:8;transform:translateX(-100%);transition:transform .25s;box-shadow:var(--sh2)}.side.on{transform:none}
.cty button span{display:none}.listp{left:8px;right:8px;width:auto;bottom:8px}.detail.on{position:absolute;inset:auto 0 0 0;width:100%;height:78%;z-index:9;border-radius:18px 18px 0 0;box-shadow:var(--sh2)}.legend{display:none}#watchb span,.logo b{display:none}}
.legend{top:auto;left:auto;right:56px;bottom:14px}
.dact{flex-wrap:wrap}
@media(max-width:900px){.banner{top:8px;left:8px;right:8px;transform:none;max-width:none;font-size:12px;line-height:1.4;padding:8px 8px 8px 12px}.banner span{flex:1}
.top{gap:4px;padding:0 8px}.cty button{padding:0 7px}#themeb,#fb span{display:none}.listp{max-height:40%}}

.cts{display:grid;gap:8px;margin:6px 0 10px}.ctc{border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5}.ctc a{word-break:break-all}
.star{cursor:pointer;font-size:16px;color:var(--fg3)}.star.on{color:#f59e0b}@media(max-width:900px){.hm{display:none}}

.r .chips{font-size:12px;font-weight:600;color:var(--fg);margin-top:3px;letter-spacing:-.01em}
.facts{display:flex;flex-wrap:wrap;gap:6px;padding:12px 18px 4px}.facts .fc{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:6px 10px;min-width:72px}
.facts .fc.w{flex-basis:100%}.facts .fc b{font:600 14px var(--font-head)}.facts .fc i{font-style:normal;font-size:11px;color:var(--fg3)}
.kvall{font-size:12.5px}.kvall>div:nth-child(odd){color:var(--fg3);word-break:break-word}.kvall>div:nth-child(even){word-break:break-word}
details.all>summary{cursor:pointer;list-style:none}details.all>summary::-webkit-details-marker{display:none}
.rel{display:flex;flex-direction:column;gap:6px;padding:0 18px}.rel a{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12.5px}.rel a:hover{border-color:var(--acc)}
#pbox{padding:0 18px}.hp .maplibregl-popup-content{font-size:12.5px;padding:8px 10px}
#mb{max-height:88vh;overflow:auto}
.dlinks{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}

.dlinks .soon{display:inline-block;font-size:11px;color:var(--fg3);background:var(--bg2);border:1px dashed var(--line2);border-radius:8px;padding:2px 7px;margin:0 4px 0 -2px;vertical-align:middle}
/* QA 14.10: actions directly under the title, compact */
.dact.dtop{padding:4px 22px 14px;gap:6px;flex-wrap:wrap}.dact.dtop .btn{font-size:13px;padding:7px 11px}.dact.dtop .ql{color:var(--muted,#64748b)}
.reg .rsel{display:flex;flex-direction:column;gap:6px}.reg select.input{width:100%;font-size:13px;padding:8px 10px}.reg select[hidden]{display:none}
/* QA 14.10: header fits 1280–1440, search always visible (mobile: floating bar over the map) */
.top .srch{flex:1 1 260px;min-width:220px;max-width:420px;width:auto}
@media(max-width:1500px){.cty button span{display:none}.cty button.on span{display:inline}.top .hm{display:none}}
@media(max-width:900px){.top .srch{display:flex;position:fixed;top:60px;left:10px;right:10px;max-width:none;min-width:0;z-index:7;background:var(--card);box-shadow:var(--sh2);height:40px}}
.dact.dtop{display:flex;flex-wrap:wrap;align-items:center;row-gap:4px}.dact.dtop>*{flex:none}.dact.dtop .btn{height:auto;min-height:32px;line-height:1.2}
.dact.dtop .ql{min-height:0;padding:4px 6px;border:0;background:none;font-size:12.5px;text-decoration:underline;text-underline-offset:3px}
.detail.on{width:440px}@media(max-width:900px){.detail.on{width:100%}}
.detail>*{flex-shrink:0}
/* search v2: bigger, prominent, autocomplete */
.top .srch{position:relative;flex:1 1 380px;min-width:260px;max-width:560px;height:44px;padding:0 16px;border-radius:12px;background:var(--card,var(--bg2));border:1.5px solid var(--line);box-shadow:0 1px 2px rgba(0,0,0,.06);font-size:15px;transition:border-color .15s,box-shadow .15s}
.top .srch svg{width:18px;height:18px;flex:none;color:var(--acc,#0d9488)}
.top .srch input{font-size:15px;height:100%}
.top .srch:focus-within{border-color:var(--acc,#0d9488);box-shadow:0 0 0 4px color-mix(in srgb,var(--acc,#0d9488) 18%,transparent)}
.sugg{display:none;position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:50;max-height:min(70vh,520px);overflow:auto;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:6px;color:var(--fg)}
.sugg.on{display:block}
.sgh{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg3);padding:8px 10px 4px}
.sgi{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:8px;cursor:pointer}
.sgi:hover,.sgi.act{background:color-mix(in srgb,var(--acc,#0d9488) 12%,transparent)}
.sgic{width:20px;text-align:center;flex:none}.sgic .dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.sgt{display:flex;flex-direction:column;min-width:0}.sgt b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sgt small{color:var(--fg3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sgt mark{background:color-mix(in srgb,var(--acc,#0d9488) 25%,transparent);color:inherit;border-radius:3px}
@media(max-width:900px){.top .srch{height:46px}}
.wtbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 4px}
.wt{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#e0f2fe;color:#075985}
.wt-new{background:#dcfce7;color:#166534}.wt-renovation{background:#fef3c7;color:#92400e}.wt-extension{background:#ede9fe;color:#5b21b6}.wt-demolition{background:#fee2e2;color:#991b1b}.wt-change_of_use{background:#fce7f3;color:#9d174d}
.wtby{font-weight:700;font-size:14px}.wdesc{margin-top:6px;font-size:14px}
.r .s .wt{padding:0 6px;font-size:11px}
/* golive 2026-10-14: top bar must never overflow (many countries + big search pushed Täna uut/Agent/account off-screen) */
@media(min-width:901px){.top{overflow:hidden}.top>*{flex-shrink:0}.top .cty{flex:0 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.top .cty::-webkit-scrollbar{display:none}
.top .srch{flex:1 1 220px;min-width:150px}.top .sp{flex:0 0 0;min-width:0}#acct{min-width:0;flex-shrink:1;overflow:hidden}}
@media(min-width:901px) and (max-width:1400px){.top .cty button{padding:0 6px}#watchb span{display:none}}
@media(max-width:900px){.top{overflow:hidden;gap:4px}.top>*{flex-shrink:0}.top .cty{flex:0 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.top .cty::-webkit-scrollbar{display:none}.top .cty button.on span{display:none}
.top .sp{display:none}#tdnav,.top a[href="/board"],.top a[href="/changes"],#watchb,#themeb{display:none}#acct{min-width:0;flex-shrink:1;overflow:hidden;max-width:90px}html,body{overflow-x:hidden}}
/* ===== simple phone view (<768px), js/mobile.js ===== */
#mcty,#mfdone,#mbd,.mgrab,.mmore{display:none}
@media(max-width:767px){
body.mob1 .top{height:auto;flex-wrap:wrap;padding:8px 10px;gap:8px;row-gap:8px;overflow:visible}
body.mob1 .top .logo,body.mob1 #cty,body.mob1 .top .lang,body.mob1 #acct,body.mob1 a[href="/admin"],body.mob1 .legend,body.mob1 #themeb,body.mob1 #tdnav,body.mob1 .top a[href="/board"],body.mob1 .top a[href="/changes"],body.mob1 #watchb,body.mob1 .sp{display:none!important}
body.mob1 .top .srch{position:static!important;order:1;flex:1 1 100%;width:100%;max-width:none;min-width:0;height:48px;font-size:16px;box-shadow:var(--sh2)}
body.mob1 .top .srch input{font-size:16px}
body.mob1 #mcty{display:block;order:2;flex:1 1 auto;height:42px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--fg);padding:0 14px;font:600 15px inherit;max-width:60%}
body.mob1 #fb{display:inline-flex!important;order:3;height:42px;padding:0 16px;border-radius:999px;font-size:15px;font-weight:600;background:var(--card);border:1px solid var(--line)}body.mob1 #fb span{display:inline!important}
body.mob1 #bellb{order:4;height:42px;width:42px;justify-content:center}
body.mob1 .banner{top:auto;bottom:86px;left:10px;right:10px;transform:none;font-size:13px}
/* filters bottom sheet */
body.mob1 .side{position:fixed!important;left:0;right:0;top:auto;bottom:0;width:100%;max-height:82vh;transform:translateY(105%)!important;border-radius:20px 20px 0 0;z-index:60;transition:transform .25s;border:0}
body.mob1 .side.on{transform:none!important}body.mob1 .side .chip{padding:9px 14px;font-size:14.5px}
body.mob1 .mhide{display:none!important}
body.mob1 #mfdone{display:flex;justify-content:center;margin:6px 14px 10px;height:48px;font-size:16px}
body.mob1.msheet #mbd{display:block;position:fixed;inset:0;background:rgba(8,9,12,.35);z-index:59}
/* results toggle */
body.mob1 .listp{left:10px;right:10px;width:auto;bottom:12px;max-height:55%;border-radius:16px}body.mob1 .listp .lh{min-height:48px;cursor:pointer}
body.mob1 .listp.min{max-height:56px;right:96px}
/* record sheet */
body.mob1 .detail.on{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%!important;height:56vh;z-index:55;border-radius:20px 20px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.25);transition:height .25s}
body.mob1 .detail.on.mfull{height:94vh}
body.mob1 .detail .mgrab{display:block;width:44px;height:5px;border-radius:3px;background:var(--line2,#ccc);margin:0 auto 10px}
body.mob1 .detail .dh h2{font-size:22px;line-height:1.2}
body.mob1 .detail:not(.mfull) .mmore{display:flex;justify-content:center;margin:8px 16px;height:44px;width:calc(100% - 32px)}
body.mob1 .detail .dx{width:40px;height:40px;font-size:18px}
/* floating agent */
body.mob1 .agtop{position:fixed!important;top:auto!important;bottom:84px!important;right:14px!important;z-index:50;height:52px;padding:0 18px!important;border-radius:999px!important;font-size:15px;box-shadow:0 8px 24px rgba(13,148,136,.45)}
body.mob1 .agtop .aglb{display:inline!important}
body.mob1.msheet .agtop,body.mob1 .detail.on~* .agtop{display:none!important}
}
@media(max-width:767px){body.mob1 .detail.on{z-index:70}body.mob1 .detail.on.mfull{height:100vh;height:100dvh;border-radius:0}
body.mob1.msheet #pa-chat,body.mob1.mdet #pa-chat,body.mob1.mdet .agtop{display:none!important}
body.mob1 #pa-chat{bottom:84px}body.mob1 .side .sfoot{padding-right:14px}}
@media(max-width:767px){body.mob1 #pa-chat,body.mob1 .pa-chat-fab,body.mob1 [id^="pa-chat"]>button{bottom:150px!important}body.mob1 .agtop{bottom:84px!important}body.mob1 .banner{bottom:150px;right:84px}}

/* Map / List toggle */
.vtog{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:8;display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--card);border:1px solid var(--line2);box-shadow:var(--sh)}
.vtog button{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:0;border-radius:999px;background:transparent;color:var(--fg2);font-weight:600;font-size:13px;cursor:pointer}
.vtog button.on{background:linear-gradient(135deg,#0d9488,#10b981);color:#fff}
.lsort{display:none;height:30px;width:auto;padding:0 8px;font-size:12.5px}
body.listmode .lsort{display:block}body.listmode #listt{display:none}
body.listmode .listp{left:0!important;right:0!important;top:0!important;bottom:0!important;width:auto!important;max-height:none!important;border-radius:0!important;z-index:7;background:var(--bg)!important;backdrop-filter:none;padding-top:56px}
body.listmode .listp .rows{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;padding:12px 16px;align-content:start;overflow:auto}
body.listmode .listp .r{border:1px solid var(--line);border-radius:12px;background:var(--card)}
body.listmode .legend,body.listmode .banner{display:none}
@media(max-width:760px){.vtog{top:10px}.vtog button{height:30px;padding:0 12px}body.listmode .listp .rows{grid-template-columns:1fr;padding:10px}}
.edp{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px;margin:10px 0;border:1px solid var(--line2);border-radius:10px;background:var(--card)}.edp b{display:block;font-size:13.5px}.edp small{color:var(--fg3);font-size:12px}
[data-theme=dark]{--acc:#14b8a6;--acc2:#2dd4bf}
[data-theme=dark] .st-granted{color:#5eead4;background:rgba(45,212,191,.12)}[data-theme=dark] .st-started{color:#fbbf24}[data-theme=dark] .st-completed{color:#6ee7b7}[data-theme=dark] .st-applied{color:#fcd34d}
[data-theme=dark] .tag{color:#d1d5db}[data-theme=dark] .vtog button.on{background:#0f766e}
.side .fg{padding:14px 16px;border-bottom:1px solid var(--line)}.side .fg .fs{padding:0;margin:0 0 10px;border:0}.side .fgh{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--fg3);margin:0 0 9px}
.side .fadv summary{cursor:pointer;list-style:none}.side .fadv summary::after{content:' +';}.side .fadv[open] summary::after{content:' –'}.side .fadv .fs label{font-size:12.5px;color:var(--fg2)}
.chip.dis{opacity:.5;cursor:help}.chip.lnk{text-decoration:none}.chip small{font-size:10.5px;color:var(--fg3)}
