:root{--ink:#081936;--muted:#5e7088;--line:#dbe7f1;--panel:#fff;--soft:#edf6fa;--brand:#0077a8;--brand-dark:#005a80;--accent:#5fb7a7;--danger:#b3261e}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:linear-gradient(180deg,#eef8fb,#f7fbfd 42%,#fff);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{min-height:100vh}.topbar{background:hsla(0,0%,100%,.9);border-bottom:1px solid var(--line);gap:18px;justify-content:space-between;padding:16px clamp(18px,4vw,52px);position:-webkit-sticky;position:sticky;top:0;z-index:10}.brand,.topbar{align-items:center;display:flex}.brand{gap:12px;min-width:220px}.brand img{border:1px solid var(--line);border-radius:8px;height:44px;object-fit:contain;width:56px}.brand strong{display:block;font-size:18px}.brand span{color:var(--brand);display:block;font-size:12px;font-style:italic}.nav{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.button,.nav a,.nav button{background:#fff;border:1px solid #bdd9eb;border-radius:8px;color:var(--ink);cursor:pointer;display:inline-flex;font-weight:700;line-height:1;padding:12px 15px}.button.primary,.nav a.active{background:var(--brand);border-color:var(--brand);color:#fff}.responsive-menu{margin-left:auto;position:relative;z-index:1000}.menu-toggle{background:var(--brand);border:1px solid var(--brand);border-radius:8px;color:#fff;cursor:pointer;font-weight:700;padding:10px 14px}.menu-backdrop{background:rgba(8,25,54,.28);border:0;bottom:0;cursor:pointer;left:0;position:fixed;right:0;top:0;z-index:1001}.menu-panel{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 22px 60px rgba(8,25,54,.18);display:block;max-height:calc(100vh - 24px);opacity:0;overflow:auto;pointer-events:none;padding:14px;position:fixed;right:14px;top:12px;transform:translateX(calc(100% + 28px));transition:opacity .16s ease,transform .16s ease;width:min(420px,calc(100vw - 28px));z-index:1002}.menu-panel.open{opacity:1;pointer-events:auto;transform:translateX(0)}.menu-panel-head{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:2px 2px 10px}.menu-panel-head button{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:24px;line-height:1}.menu-section{padding:12px 0 2px}.menu-section h2{color:var(--muted);font-size:12px;letter-spacing:.08em;margin:0 0 8px;text-transform:uppercase}.menu-links{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.menu-link{background:#f7fbfd;border:1px solid var(--line);border-radius:8px;color:var(--ink);font-weight:700;line-height:1.15;min-height:42px;padding:10px 12px}.menu-link.active{background:#e7f5fb;border-color:#96cde4;color:var(--brand-dark)}.menu-link.danger-link{background:#fff1f0;border-color:#ffc9c3;color:var(--danger)}.menu-logout{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.menu-logout button{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink);cursor:pointer;font-weight:700;padding:10px 12px;width:100%}.table-actions{display:flex;flex-wrap:wrap;gap:8px}.container{margin:0 auto;max-width:1180px;padding:34px clamp(18px,4vw,52px)}.hero{align-items:center;display:grid;grid-gap:28px;gap:28px;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);min-height:520px}.hero h1{font-size:clamp(36px,6vw,76px);letter-spacing:0;line-height:.95;margin:0 0 20px}.hero p,.lead{color:var(--muted);font-size:18px;line-height:1.5}.hero-visual{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.hero-visual img{display:block;height:auto;width:100%}.grid{display:grid;grid-gap:18px;gap:18px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:22px}.panel h1,.panel h2,.panel h3{margin-top:0}.form{display:grid;grid-gap:14px;gap:14px}.field{display:grid;grid-gap:7px;gap:7px}.field span{color:var(--muted);font-size:13px;font-weight:700}.field input,.field select,.field textarea{border:1px solid #bdd0df;border-radius:8px;padding:12px;width:100%}.field textarea{min-height:120px;resize:vertical}.checkbox-line{align-items:center;padding:12px}.checkbox-line input{height:18px;width:18px}.summary-band{background:#e8f5f7;border:1px solid #bdd9eb;border-radius:8px;display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));padding:16px}.summary-band span,.summary-band strong{display:block}.summary-band span{color:var(--muted);font-size:13px;margin-top:4px}.table{border-collapse:collapse;width:100%}.table td,.table th{border-bottom:1px solid var(--line);padding:12px 10px;text-align:left;vertical-align:top}.badge{background:#e1f2ec;border:1px solid #b7dccc;border-radius:999px;color:#0c604f;display:inline-flex;font-size:12px;font-weight:700;padding:6px 10px}.badge.red{background:#ffe8e8;border-color:#ffc8c8;color:var(--danger)}.status{border-radius:8px;margin:12px 0;padding:12px 14px}.status.ok{background:#eaf7ef;color:#146232}.status.error{background:#ffe8e8;color:var(--danger)}.calendar-list{display:grid;grid-gap:12px;gap:12px}.calendar-item{border-left:5px solid var(--accent);display:grid;grid-gap:6px;gap:6px}.calendar-item.confirmed{border-left-color:#d13f32}.footer,.muted{color:var(--muted)}.footer{border-top:1px solid var(--line);padding:22px clamp(18px,4vw,52px)}@media (max-width:860px){.grid.cols-2,.grid.cols-3,.hero,.summary-band{grid-template-columns:1fr}.topbar{align-items:center;flex-direction:row;gap:10px;padding:10px 14px}.brand{gap:8px;min-width:0}.brand img{height:38px;width:48px}.brand strong{font-size:14px}.brand span span{font-size:11px}.menu-panel{border-radius:0;bottom:0;max-height:none;right:0;top:0;width:min(360px,92vw)}.menu-links{grid-template-columns:1fr}}.topbar{box-shadow:0 10px 28px rgba(8,25,54,.06)}.button.danger,.danger-card,.nav a.danger-link{background:#b3261e;border-color:#b3261e;color:#fff}.danger-card h2,.danger-card p{color:#fff}.admin-hero,.hero-panel,.portal-welcome{background:linear-gradient(135deg,#fff,#f0fbff 58%,#eaf7f4);border-color:#c8e5f1}.action-grid .panel,.service-teasers .panel{transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.action-grid .panel:hover,.service-teasers .panel:hover{border-color:#8bc7df;box-shadow:0 14px 32px rgba(8,25,54,.1);transform:translateY(-2px)}.action-card h2{font-size:34px;margin-bottom:8px}.action-card p{color:var(--muted);font-weight:700;margin-bottom:0}.logo-card{align-items:center;display:flex;justify-content:center;padding:26px}.logo-card img{max-height:420px;object-fit:contain}.notice-box{background:#edf9fb;border:1px solid #bfe4ee;border-radius:8px;color:#184967;line-height:1.45;padding:14px 16px}.compact-form{max-width:760px}.service-teasers{margin-top:10px}.table .button{padding:9px 12px}.inline-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.form-error.compact{display:inline-block;font-size:12px;margin:0;padding:6px 8px}select[multiple]{min-height:132px}.footer a{color:var(--ink)}.legal-page{max-width:980px}.legal-sections{display:grid;grid-gap:22px;gap:22px;margin-top:26px}.legal-section{border-top:1px solid var(--line);padding-top:18px}.legal-section h2{font-size:22px;margin-bottom:10px}.legal-section p{color:var(--text);line-height:1.62;margin:8px 0}.legal-section ul{margin:10px 0 0 22px;padding:0}.legal-section li{margin:7px 0}.legal-note{border-top:1px solid var(--line);color:var(--muted);font-size:13px;line-height:1.5;margin-top:18px;padding-top:14px}.checkbox-line a,.legal-note a{color:var(--accent);font-weight:700}.checkbox-line{align-items:flex-start;background:#f7fbfd;border:1px solid var(--line);border-radius:8px;display:flex;gap:10px;line-height:1.45;padding:12px 14px}.checkbox-line input{margin-top:3px}.admin-request-actions{display:grid;grid-gap:10px;gap:10px;min-width:320px}.admin-request-actions .field{margin-bottom:0}.compact-grid{gap:8px}.request-status-line{display:flex;justify-content:flex-start}.ticket-history{display:grid;grid-gap:12px;gap:12px}.file-tile,.ticket-message{background:#f7fbfd;border:1px solid var(--line);border-radius:8px;padding:14px}.ticket-message.internal{background:#fff8e8;border-color:#f0d9a8}.ticket-message-head{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.ticket-message-head span,.ticket-message-meta{color:var(--muted);font-size:12px}.ticket-message p{line-height:1.55;margin:10px 0}.copyright-notice{color:var(--muted);display:block;font-size:12px;line-height:1.45;margin-top:8px}.toast-message{background:#fff;border:1px solid #9dd7b0;border-left:6px solid #188642;border-radius:8px;box-shadow:0 18px 42px rgba(8,25,54,.18);display:grid;grid-gap:4px;gap:4px;max-width:min(420px,calc(100vw - 28px));padding:14px 42px 14px 16px;position:fixed;right:18px;top:86px;z-index:1100}.toast-message button{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:22px;line-height:1;position:absolute;right:12px;top:10px}.toast-message span{color:var(--muted)}.admin-refresh-bar{display:flex;justify-content:flex-end;padding:14px clamp(18px,4vw,52px) 0}.refresh-button{background:#fff}.month-calendar{display:grid;grid-gap:10px;gap:10px;width:100%}.month-calendar-grid,.month-calendar-head{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(7,minmax(0,1fr))}.month-calendar-head span{color:var(--muted);font-size:12px;font-weight:700;text-align:center}.month-day{align-content:start;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink);cursor:pointer;display:grid;grid-gap:7px;gap:7px;min-height:126px;padding:9px;text-align:left}.month-day.selected,.month-day:hover{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.month-day.outside{background:#f7fbfd;color:#8796a8}.month-day.locked{background:#f1f4f7}.month-day.busy{background:#f8fbfc}.month-day strong{font-size:15px}.day-events{display:grid;grid-gap:4px;gap:4px;min-width:0}.calendar-pill{border-radius:999px;display:block;font-size:11px;font-weight:700;line-height:1.2;overflow:hidden;padding:5px 7px;text-overflow:ellipsis;white-space:nowrap}.calendar-pill.blocked,.calendar-pill.confirmed{background:#e7e9ed;color:#465365}.calendar-pill.proposed{background:#fff0cf;color:#805600}.calendar-pill.service{background:#e8f5f7;color:#0c5877}.calendar-pill.region{color:#073149}.calendar-pill.locked,.calendar-pill.more{background:#eef2f5;color:var(--muted)}.region-0{background:#d9f1ff}.region-1{background:#dff6e8}.region-2{background:#fff2cb}.region-3{background:#ffe2dd}.region-4{background:#ece7ff}.region-5,.region-default{background:#e7f0f4}.day-detail-panel{background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:10px;gap:10px;padding:16px}.day-detail-panel h3{margin:0}.day-detail-row{background:#f7fbfd;border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:8px;display:grid;grid-gap:4px;gap:4px;padding:12px}.day-detail-row.blocked,.day-detail-row.confirmed{border-left-color:#7b8794}.day-detail-row.proposed{border-left-color:#d39200}.day-detail-row.service{border-left-color:var(--brand)}.day-detail-row small{color:var(--muted)}.modal-backdrop{align-items:center;background:rgba(8,25,54,.42);display:flex;inset:0;justify-content:center;padding:18px;position:fixed;z-index:1200}.modal-panel{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 22px 70px rgba(8,25,54,.22);display:grid;grid-gap:14px;gap:14px;max-height:calc(100vh - 36px);max-width:620px;overflow:auto;padding:22px;width:100%}.modal-panel h2{margin:0}.icon-button{align-items:center;background:#fff;border:1px solid #bdd9eb;border-radius:8px;display:inline-flex;font-size:15px;font-weight:700;height:34px;justify-content:center;line-height:1;width:34px}.icon-button:hover{background:#e7f5fb;border-color:#8bc7df}.turnus-row{align-items:end;border-bottom:1px solid var(--line);display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;padding:14px 0}.turnus-row:last-child{border-bottom:0}.reminder-row{align-items:center;display:grid;grid-gap:14px;gap:14px;grid-template-columns:minmax(190px,1.4fr) repeat(3,minmax(130px,1fr)) auto}.reminder-row>div{display:grid;grid-gap:4px;gap:4px}@media (max-width:860px){.month-calendar-head{display:none}.month-calendar-grid{grid-template-columns:1fr}.month-day{min-height:auto}.month-day.outside{display:none}.reminder-row,.turnus-row{grid-template-columns:1fr}.reminder-row{align-items:stretch}}