:root{
  --navy:#0b2b4a;--blue:#0f6fce;--blue2:#eaf4ff;--green:#137a50;--orange:#e78424;
  --red:#d63a3a;--ink:#17212b;--muted:#66717d;--line:#d9e1e8;--panel:#fff;--bg:#f5f8fb;
  --shadow:0 8px 30px rgba(18,45,70,.10);--radius:14px;
}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,"DM Sans",Arial,sans-serif;color:var(--ink);background:var(--bg)}
button,input,select,textarea{font:inherit}button{cursor:pointer}
.app{height:100%;display:grid;grid-template-rows:64px 1fr;overflow:hidden}
.topbar{display:flex;align-items:center;gap:16px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line);z-index:30}
.brand{min-width:330px}.brand h1{font-size:21px;line-height:1;margin:0;color:var(--navy)}.brand small{color:#4779aa}
.tabs{display:flex;gap:6px;align-self:stretch}.tab{border:0;background:transparent;padding:0 16px;color:#44515e;border-bottom:3px solid transparent}.tab.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:700;background:#f7fbff}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.user-pill{font-size:13px;color:var(--muted);padding:8px 10px;background:#f2f5f8;border-radius:20px}.btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px;color:var(--ink)}.btn:hover{background:#f7fafc}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.success{background:#198754;border-color:#198754;color:#fff}.btn.danger{color:#a11;border-color:#e1b7b7}.btn.sm{padding:6px 9px;font-size:12px}
.main{min-height:0;display:grid;grid-template-columns:330px minmax(0,1fr);position:relative}.sidebar{background:#fff;border-right:1px solid var(--line);overflow:auto;padding:14px;z-index:10}.content{position:relative;min-width:0;min-height:0}.view{display:none;width:100%;height:100%}.view.active{display:block}
.section{padding:12px 0;border-bottom:1px solid #edf1f4}.section:first-child{padding-top:0}.section-title{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:800;color:var(--navy);margin-bottom:8px}.muted{color:var(--muted);font-size:12px}.field{margin-bottom:10px}.field label{display:block;font-size:11px;font-weight:700;color:#51606e;margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff;color:var(--ink)}.field textarea{resize:vertical;min-height:70px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{border:1px solid var(--line);border-radius:10px;padding:9px;background:#fbfdff}.stat b{display:block;font-size:18px;color:var(--navy)}.stat span{font-size:11px;color:var(--muted)}
.layer-list{display:grid;gap:7px}.check{display:flex;align-items:center;gap:8px;font-size:13px}.check input{accent-color:var(--blue)}
.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool.active{background:var(--blue2);border-color:#9bc8f5;color:#064e96;font-weight:700}
#map{width:100%;height:100%}.map-search{position:absolute;top:14px;right:16px;z-index:8;width:min(360px,45vw);background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:9px 12px}.map-search input{width:100%;border:0;outline:0}
.legend{position:absolute;right:16px;top:66px;z-index:8;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;box-shadow:var(--shadow);font-size:12px;min-width:170px}.legend .row{display:flex;gap:8px;align-items:center;margin:5px 0}.dot{width:12px;height:12px;border-radius:50%}.dot.red{background:var(--red)}.dot.orange{background:var(--orange)}.dot.green{background:var(--green)}.dot.blue{background:var(--blue)}
.card-panel{height:100%;overflow:auto;padding:18px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 10px rgba(20,45,70,.04);padding:14px}.card h3{margin:0 0 6px;font-size:15px;color:var(--navy)}.badge{display:inline-block;font-size:11px;padding:3px 7px;border-radius:999px;background:#eef3f7;color:#455}.badge.p1{background:#ffe6e2;color:#a32}.badge.p2{background:#fff0d7;color:#a65a00}.badge.p3{background:#e8f4eb;color:#28633a}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px}.data-table{border-collapse:collapse;width:100%;min-width:900px}.data-table th,.data-table td{padding:10px;border-bottom:1px solid #edf1f4;text-align:left;font-size:12px}.data-table th{position:sticky;top:0;background:#f7fafc;color:#52606d;z-index:2}.data-table tr:hover td{background:#fbfdff}.clickrow{cursor:pointer}
.cost-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.big-total{font-size:34px;font-weight:800;color:var(--navy);margin:8px 0}.bars{display:grid;gap:8px}.barrow{display:grid;grid-template-columns:130px 1fr 90px;gap:8px;align-items:center;font-size:12px}.bar{height:12px;background:#edf2f6;border-radius:8px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--blue)}
.report-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;max-width:900px}.report-box h2{color:var(--navy);margin-top:0}.report-actions{display:flex;gap:8px;flex-wrap:wrap}
.drawer-backdrop{display:none;position:fixed;inset:0;background:rgba(9,31,50,.35);z-index:60}.drawer-backdrop.show{display:block}.drawer{position:fixed;right:0;top:0;height:100%;width:min(460px,100vw);background:#fff;z-index:70;transform:translateX(102%);transition:.2s;box-shadow:-10px 0 40px rgba(0,0,0,.15);display:flex;flex-direction:column}.drawer.show{transform:none}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:17px;color:var(--navy)}.drawer-body{padding:16px;overflow:auto}.drawer-footer{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px}.drawer-footer .btn{flex:1}
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}.photo-grid img{width:100%;height:90px;object-fit:cover;border-radius:8px}.notice{border-radius:10px;padding:10px 12px;font-size:12px;margin:8px 0}.notice.info{background:#eaf4ff;color:#174f82}.notice.warn{background:#fff3d9;color:#7f5500}.notice.error{background:#ffe5e5;color:#8f2222}.notice.ok{background:#e7f5ea;color:#236136}
.login-shell{min-height:100%;display:grid;place-items:center;background:linear-gradient(140deg,#e9f4ff,#f7fbff 55%,#e9f6ee)}.login-card{width:min(430px,92vw);background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:24px}.login-card h1{color:var(--navy);margin:0 0 4px}.login-card p{color:var(--muted);margin:0 0 18px}.login-card .btn{width:100%}
.mobile-link{display:none}
@media(max-width:900px){.brand{min-width:0}.brand h1{font-size:16px}.brand small{display:none}.tabs .tab{padding:0 9px;font-size:12px}.main{grid-template-columns:280px 1fr}.top-actions .user-pill{display:none}.mobile-link{display:inline-flex}}
@media(max-width:700px){.app{grid-template-rows:56px 1fr}.topbar{padding:0 8px;gap:4px}.brand{display:none}.tabs{overflow:auto}.tab{white-space:nowrap}.main{display:block}.sidebar{display:none}.content{height:100%}.map-search{left:10px;right:10px;width:auto}.legend{display:none}.card-panel{padding:10px}.cost-layout{grid-template-columns:1fr}.drawer{width:100vw}.top-actions{margin-left:4px}.top-actions .desktop-only{display:none}}

/* v0.1.3 – kevyt jokireitin suunnittelutyönkulku */
.route-wizard-btn{width:100%;padding:12px 14px;font-weight:800;font-size:14px;margin-bottom:8px;box-shadow:0 4px 12px rgba(15,111,206,.16)}
.route-wizard-btn.active{background:#0a5bab;border-color:#0a5bab;box-shadow:0 0 0 3px rgba(15,111,206,.15)}
.compact-tools{margin-top:6px}.advanced-tools{margin-top:9px;border-top:1px dashed var(--line);padding-top:8px}.advanced-tools summary{font-size:12px;color:var(--muted);cursor:pointer;user-select:none;margin-bottom:8px}.advanced-tools[open] summary{color:var(--navy);font-weight:700}
.river-plan-bar{position:absolute;z-index:20;left:50%;bottom:22px;transform:translateX(-50%);width:min(760px,calc(100% - 40px));background:rgba(255,255,255,.97);border:1px solid #cdd9e5;border-radius:14px;box-shadow:0 10px 36px rgba(10,40,70,.22);padding:10px 12px;display:flex;align-items:center;gap:14px;backdrop-filter:blur(6px)}
.river-plan-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.river-plan-info b{color:var(--navy);font-size:14px}.river-plan-info span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.river-plan-actions{display:flex;gap:7px;flex-shrink:0}.river-plan-actions .btn{min-width:90px}
@media(max-width:700px){.river-plan-bar{left:10px;right:10px;bottom:14px;transform:none;width:auto;align-items:stretch}.river-plan-info span{white-space:normal}.river-plan-actions{align-items:center}.river-plan-actions .btn{min-width:auto}}
