:root{--yonsininen: #232f3d;--syva-yonsininen: #0f1924;--jaansininen: #cbe9f4;--jaavalkoinen: #fdfdfd;--mansikka: #e61c23;--tumma-mansikka: #ac1a25;--lehtivihrea: #51b147;--tumma-lehtivihrea: #3f9636;--jaansininen-keskisavy: #b6d0de;--siemenkeltainen: #f4eb89;--tausta: #f6fafc;--teksti: var(--yonsininen);--teksti-toissijainen: #56697b;--kortti: #ffffff;--reunus: #c9dbe6;--kentta: #fbfdff;--korostus: var(--yonsininen);--virhe: var(--tumma-mansikka);--muu-varaus: #e9eef3;--suljettu: rgb(35 47 61 / .07)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--tausta: #232f3d;--teksti: var(--jaavalkoinen);--teksti-toissijainen: #b6d0de;--kortti: #2a3949;--reunus: #435568;--kentta: #0f1924;--korostus: var(--jaansininen);--virhe: #ff9d8f;--muu-varaus: #435568;--suljettu: rgb(15 25 36 / .45)}}:root[data-theme=dark]{--tausta: #232f3d;--teksti: var(--jaavalkoinen);--teksti-toissijainen: #b6d0de;--kortti: #2a3949;--reunus: #435568;--kentta: #0f1924;--korostus: var(--jaansininen);--virhe: #ff9d8f;--muu-varaus: #435568;--suljettu: rgb(15 25 36 / .45)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Roboto,system-ui,sans-serif;background:var(--tausta);color:var(--teksti)}.container{max-width:80rem;margin:0 auto;padding:1.5rem 1rem}.narrow{max-width:26rem;margin:0 auto;width:100%}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}@media(max-width:900px){.profile-grid{grid-template-columns:1fr}}.info-list{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1.5rem;margin:0}.info-list dt{font-weight:600}.info-list dd{margin:0}.brand{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.brand img{width:72px;height:72px;border-radius:12px}.brand h1{margin:0;font-family:Montserrat,Futura,Segoe UI,system-ui,sans-serif;font-size:1.5rem;line-height:1.2;text-transform:uppercase;letter-spacing:.02em}.brand h1 strong{display:block;font-weight:900}.brand h1 span{font-weight:400;color:var(--teksti-toissijainen)}.brand .tagline{margin:.25rem 0 0;color:var(--teksti-toissijainen);font-size:.9rem}.card{background:var(--kortti);border:1px solid var(--reunus);border-top:3px solid var(--jaansininen-keskisavy);border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #232f3d14;display:flex;flex-direction:column;gap:.75rem}.card h2{margin:0;font-family:Montserrat,Futura,Segoe UI,system-ui,sans-serif}.card p{margin:0}label{display:flex;flex-direction:column;gap:.25rem;font-weight:600}label.checkbox{flex-direction:row;align-items:center;gap:.5rem;font-weight:400}input[type=email],input[type=text]{font:inherit;padding:.5rem;border:1px solid var(--reunus);border-radius:6px;background:var(--kentta);color:var(--teksti)}input:focus-visible,button:focus-visible{outline:2px solid var(--korostus);outline-offset:1px}input[type=checkbox]{accent-color:var(--korostus)}button{font:inherit;font-weight:600;padding:.5rem 1rem;border:none;border-radius:6px;background:var(--lehtivihrea);color:var( --syva-yonsininen );cursor:pointer}button:hover:not(:disabled){background:var(--tumma-lehtivihrea)}button:disabled{background:var(--reunus);color:var(--teksti-toissijainen);cursor:default}button.linklike{background:none;font-weight:400;color:var(--teksti-toissijainen);text-decoration:underline;padding:0;align-self:flex-start}button.linklike:hover:not(:disabled){background:none;color:var(--yonsininen)}.error{color:var(--virhe)}.secondary{color:var(--teksti-toissijainen)}.row{display:flex;gap:.75rem;align-items:end;flex-wrap:wrap}select,input[type=date],input[type=month],input[type=number]{font:inherit;padding:.5rem;border:1px solid var(--reunus);border-radius:6px;background:var(--kentta);color:var(--teksti)}button.danger{background:var(--mansikka);color:#fff}button.danger:hover:not(:disabled){background:var(--tumma-mansikka)}.topbar{background:var(--yonsininen);color:var(--jaavalkoinen)}.topbar-inner{max-width:80rem;margin:0 auto;padding:.5rem 1rem;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.topbar .brand{margin:0;gap:.6rem;text-decoration:none}.topbar .brand img{width:44px;height:44px;border-radius:8px}.topbar .brand h1{font-size:1rem;color:var(--jaavalkoinen)}.topbar .brand h1 strong{display:inline}.topbar .brand h1 span{color:var(--jaansininen-keskisavy)}.topbar nav{display:flex;gap:1rem;margin-left:auto;align-items:center;flex-wrap:wrap}.topbar nav a{color:var(--jaansininen);text-decoration:none;font-weight:600}.topbar nav a.active{text-decoration:underline;text-underline-offset:4px}.topbar .user{color:var(--jaansininen-keskisavy);font-size:.85rem}.topbar .user-box{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.topbar .user-line{display:flex;align-items:center;gap:.6rem}.topbar .user-box>.linklike{font-size:.8rem}.topbar .linklike{color:var(--jaansininen)}.topbar .lang-toggle{font-weight:700;font-size:.8rem;border:1px solid var(--jaansininen-keskisavy);border-radius:4px;padding:.1rem .35rem}.topbar .linklike:hover:not(:disabled){color:var(--jaavalkoinen)}.cal-toolbar{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.75rem}.cal-toolbar h2{margin:0;font-family:Montserrat,Futura,Segoe UI,system-ui,sans-serif;font-size:1.1rem}.cal-controls{display:flex;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;flex-wrap:wrap}.cal-controls .row{align-items:center}.cal-wrap{overflow-x:auto}.cal-grid{display:grid;grid-template-columns:3.2rem repeat(7,minmax(6.5rem,1fr));gap:2px;min-width:52rem}.cal-head{text-align:center;font-weight:600;font-size:.85rem;padding:.25rem}.cal-head.today{background:var(--jaansininen);color:var(--yonsininen);border-radius:4px}.cal-times{position:relative}.cal-times span{position:absolute;right:.35rem;transform:translateY(-50%);font-size:.7rem;color:var(--teksti-toissijainen)}.cal-col{position:relative;background:var(--kortti);border:1px solid var(--reunus);border-radius:4px;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 47px,var(--reunus) 47px,var(--reunus) 48px);-webkit-user-select:none;user-select:none}.closed{position:absolute;left:0;right:0;background:var(--suljettu);pointer-events:none}.booking{position:absolute;left:2px;right:2px;border-radius:4px;padding:1px 4px;overflow:hidden;font-size:.72rem;line-height:1.25;background:var(--muu-varaus);border:1px solid var(--reunus);color:var(--teksti-toissijainen);cursor:pointer}.booking.own{background:var(--jaansininen);border:2px solid var(--yonsininen);color:var(--yonsininen)}.booking .org{display:block;font-weight:600}.maintenance{position:absolute;left:2px;right:2px;background:repeating-linear-gradient(45deg,rgb(35 47 61 / .14) 0 4px,transparent 4px 8px);border-radius:2px;pointer-events:none}.block{position:absolute;left:2px;right:2px;background:repeating-linear-gradient(45deg,#f4eb898c 0,#f4eb898c 6px,#232f3d14 6px,#232f3d14 12px);border:1px dashed var(--reunus);border-radius:4px;font-size:.72rem;padding:1px 4px;overflow:hidden;color:var(--teksti)}.selection{position:absolute;left:2px;right:2px;background:#51b14740;border:2px solid var(--lehtivihrea);border-radius:4px;pointer-events:none;font-size:.72rem;font-weight:600;padding:1px 4px;color:var(--teksti)}.nowline{position:absolute;left:0;right:0;height:2px;background:var(--mansikka);pointer-events:none}.legend{display:flex;gap:1.25rem;flex-wrap:wrap;font-size:.8rem;color:var(--teksti-toissijainen);margin-top:.75rem}.chip{display:inline-block;width:.8rem;height:.8rem;border-radius:3px;margin-right:.35rem;vertical-align:-1px;border:1px solid var(--reunus)}.chip-own{background:var(--jaansininen);border:2px solid var(--yonsininen)}.chip-other{background:var(--muu-varaus)}.chip-maintenance{background:repeating-linear-gradient(45deg,rgb(35 47 61 / .14) 0 3px,transparent 3px 6px)}.chip-block{background:repeating-linear-gradient(45deg,#f4eb898c 0,#f4eb898c 4px,#232f3d14 4px,#232f3d14 8px)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f192480;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.modal{width:100%;max-width:26rem;max-height:90vh;overflow:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.modal-header h2{font-size:1.1rem}.modal-form{display:flex;flex-direction:column;gap:.75rem}.stack{display:flex;flex-direction:column;gap:1.5rem}.bulk-table{border-collapse:collapse;font-size:.9rem;width:100%;max-width:40rem}.bulk-table th{text-align:left;padding:.3rem .75rem .3rem 0;border-bottom:2px solid var(--reunus)}.bulk-table td{padding:.3rem .75rem .3rem 0;border-bottom:1px solid var(--reunus)}.bulk-table tr.skip td{color:var(--teksti-toissijainen)}.org-block{margin-top:.75rem;padding:.75rem 1rem;background:color-mix(in srgb,var(--teksti) 6%,var(--kortti));border:1px solid var(--reunus);border-radius:8px}.org-block-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:0 0 .5rem}.org-block-head strong{font-size:1.05rem}.org-block-sum{margin-left:auto}.vat-table{margin-top:.5rem;max-width:28rem}.total-row td{border-top:2px solid var(--teksti);font-weight:600}.bulk-table .num{text-align:right;white-space:nowrap}.bulk-table .sum-col{width:8rem}.clickable-row{cursor:pointer}.clickable-row:hover td{background:color-mix(in srgb,var(--teksti) 6%,var(--kortti))}.tabs{display:flex;gap:.5rem;border-bottom:2px solid var(--reunus)}.tab{background:none;color:var(--teksti);border-radius:6px 6px 0 0;padding:.5rem 1.2rem;font-weight:600}.tab:hover:not(:disabled){background:color-mix(in srgb,var(--teksti) 8%,var(--tausta))}.tab.active{background:var(--yonsininen);color:var(--jaavalkoinen)}.member-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.subnav{display:flex;gap:1rem}.subnav a{color:var(--teksti);font-weight:600;text-decoration:none;padding-bottom:.2rem}.subnav a.active{border-bottom:3px solid var(--jaansininen-keskisavy)}.print-only{display:none}@media print{body *{visibility:hidden}.topbar,.cal-toolbar,.cal-filters,.cal-wrap,.legend,.no-print{display:none!important}.printable,.printable *{visibility:visible}.printable{position:absolute;top:0;left:0;width:100%;border:none;box-shadow:none}.printable .no-print{display:none}.print-only{display:block;font-weight:600}}.toolbar-link{color:var(--teksti);font-weight:600}.audit-data{max-width:24rem;overflow-wrap:anywhere;font-size:.75rem;color:var(--teksti-toissijainen)}.bulk-table.table-full{max-width:none;width:100%}.modal.wide{max-width:48rem}.btn-small{padding:.25rem .6rem;font-size:.85rem}.grow{flex:1;min-width:14rem}input[type=search],input[type=tel]{font:inherit;padding:.5rem;border:1px solid var(--reunus);border-radius:6px;background:var(--kentta);color:var(--teksti)}.setting{border-bottom:1px solid var(--reunus);padding-bottom:1rem;display:flex;flex-direction:column;gap:.5rem}.setting h3{margin:0}.label-text{font-weight:600;display:block;margin-bottom:.25rem}.color-grid{display:flex;flex-wrap:wrap;gap:.3rem;max-width:24rem}.swatch{width:1.6rem;height:1.6rem;padding:0;border:2px solid var(--reunus);border-radius:4px;background:var(--kentta);color:var(--teksti-toissijainen);font-size:.7rem}.swatch.selected{border-color:var(--korostus);outline:2px solid var(--korostus)}.btn-link{display:inline-block;background:var(--lehtivihrea);color:var(--syva-yonsininen);border-radius:6px;text-decoration:none;font-weight:600}.btn-link:hover{background:var(--tumma-lehtivihrea)}.jump{display:inline-flex;flex-direction:row;align-items:center;gap:.4rem;white-space:nowrap;font-size:.8rem;font-weight:400;color:var(--teksti-toissijainen)}.jump input{padding:.3rem .4rem;font-size:.85rem}.cal-filters{margin-bottom:.5rem}.cal-head .driver{font-weight:400;font-size:.7rem;color:var(--teksti-toissijainen);display:flex;gap:.25rem;justify-content:center;align-items:center;min-height:1rem}.print-week{display:none}@media print{@page{size:A4 landscape;margin:8mm}.print-week{display:block;font-size:8pt;line-height:1.25}.print-week h2{font-size:12pt;margin:0 0 .4rem}.print-days{display:grid;grid-template-columns:repeat(7,1fr);gap:0 2.5mm;align-items:start}.print-day{break-inside:avoid;page-break-inside:avoid;min-width:0}.print-day h3{font-size:8.5pt;margin:0 0 .15rem;padding-bottom:.1rem;border-bottom:1px solid #444}.print-day p{margin:0 0 .15rem;font-size:7.5pt}.print-driver{font-weight:600}.print-booking{margin:0 0 .3rem;overflow-wrap:break-word}.print-booking strong{display:block;font-size:8pt}.print-booking div{font-size:7.5pt}.print-notes{color:#333;font-style:italic}}.btn-icon{padding:.2rem .45rem;font-size:.95rem;line-height:1;background:var(--kentta);border:1px solid var(--reunus);color:var(--teksti)}.btn-icon:hover:not(:disabled){background:var(--jaansininen);color:var(--yonsininen)}.actions{white-space:nowrap;display:flex;gap:.3rem}
