:root{--bg: #f5f9fc;--panel: #fff;--text: #151515;--muted: #5f6d78;--line: #d8e6ef;--accent: #8fd3ff;--accent-dark: #176b95;--ink: #111111;--danger: #b42318;--ok: #247a48;--hover-bg: #eef5fa;--diff-bg: #f7fbfd;--border: var(--line);font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html{overflow-x:hidden}body{margin:0;min-width:320px;background:var(--bg);overflow-x:hidden}button,input,select,textarea{font:inherit}button,a{border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);cursor:pointer;min-height:36px;padding:8px 12px;text-decoration:none}button:disabled{cursor:not-allowed;opacity:.45}button.primary{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff;font-weight:700}button.ghost{background:transparent}button.danger{color:var(--danger)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--text);min-height:38px;padding:8px 10px}textarea{resize:vertical}label{display:grid;gap:6px;color:var(--muted);font-size:13px;font-weight:700}table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left;vertical-align:top}th{color:var(--muted);font-size:12px;text-transform:uppercase}.topbar{align-items:center;background:var(--ink);border-bottom:3px solid var(--accent);color:#fff;display:flex;justify-content:space-between;gap:20px;padding:14px 22px}.topbar p,.eyebrow{color:var(--accent);font-size:12px;font-weight:700;letter-spacing:0;margin:0 0 2px;text-transform:uppercase}.topbar h1,.login-panel h1{margin:0;font-size:28px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar nav{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.user-menu{position:relative}.user-trigger{background:var(--accent);border-color:var(--accent);color:var(--ink);font-weight:700}.user-menu-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 32px #0000002e;display:none;min-width:180px;padding:8px;position:absolute;right:0;top:100%;z-index:20}.user-menu.open .user-menu-panel{display:grid;gap:6px}.user-menu-panel button{justify-content:flex-start;text-align:left;width:100%}.app-shell{display:grid;gap:18px;grid-template-columns:minmax(320px,420px) minmax(0,1fr);padding:18px}.left-col,.right-col{display:grid;align-content:start;gap:16px}.panel,.metric{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px}.panel h2{font-size:18px;margin:0 0 12px}.panel-title{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.panel-title h2{margin:0}.panel-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.entry-form{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.entry-form .wide{grid-column:1 / -1}.segmented{display:grid;grid-column:1 / -1;grid-template-columns:repeat(2,1fr);gap:6px}.segmented button.active{background:var(--ink);border-color:var(--ink);color:#fff}.summary-list,.mini-list{display:grid;gap:8px}.day-panel{position:relative}.day-panel.weekend{background:#fff8f1;border-color:#efc08b}.day-panel-head{align-items:center;display:flex;gap:10px;justify-content:space-between;margin-bottom:12px}.day-panel-head h2{margin:0}.day-badge{border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:11px;font-weight:700;padding:4px 9px;white-space:nowrap}.day-badge.saturday{background:#fff0dc;border-color:#e5a75e;color:#8a5200}.day-badge.sunday{background:#ffe8e4;border-color:#e58b7f;color:#9b271d}.day-badge.workday{background:#edf8f1;border-color:#9fd3b4;color:var(--ok)}.summary-list div,.mini-list div{align-items:baseline;display:flex;gap:12px;justify-content:space-between}.summary-list div span,.mini-list div span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-list div strong,.mini-list div strong{flex-shrink:0;padding-right:4px;white-space:nowrap}.summary-list span,.mini-list span,.muted{color:var(--muted)}.metrics-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.summary-sub{padding-left:12px;font-size:.88rem;opacity:.8}.summary-group-sep{align-items:baseline;display:flex;gap:12px;justify-content:space-between;border-top:1px solid var(--line);margin-top:4px;padding-top:8px}.metric header{display:grid;gap:4px;margin-bottom:12px}.metric header span{color:var(--muted);font-weight:700}.metric header strong{color:var(--ok);font-size:26px}.metric.expense header strong,.error{color:var(--danger)}.period-bar{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.filters,.password-form{align-items:end;display:flex;flex-wrap:wrap;gap:10px}.period-bar label,.label-inline{width:170px}.period-step{min-width:48px;font-weight:700}.period-label{flex:1;font-weight:700;font-size:16px;text-align:center}.filters select{width:150px}.filters input{width:220px}.table-wrap{overflow-x:auto}.table-wrap.compact{max-height:260px;overflow:auto}.num{font-weight:700;text-align:right;white-space:nowrap}.row-actions{display:flex;gap:6px;min-width:150px}.pager{align-items:center;display:flex;gap:10px;justify-content:flex-end;margin-top:12px}.report-section{display:grid;gap:12px}.report-section-title{font-size:11px;font-weight:700;letter-spacing:.08em;margin:0;padding-bottom:8px;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--line)}.report-grid,.config-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.config-meta-row{max-width:420px;margin-bottom:8px}.config-box{border:1px solid var(--line);border-radius:8px;padding:12px}.config-section{display:grid;gap:12px;margin-top:16px}.nested-config-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px}.nested-config-grid .config-section{margin-top:0;align-content:start}.config-section>h3,.config-section-head h3{font-size:16px;margin:0}.config-section-head{align-items:center;display:flex;gap:10px;justify-content:space-between;background:var(--bg);border-radius:4px;padding:6px 8px;margin:-4px -4px 0}.config-title{align-items:center;display:flex;gap:10px;justify-content:space-between;background:var(--bg);border-radius:4px;padding:6px 8px;margin:-4px -4px 8px}.config-title h3{font-size:14px;margin:0}.config-rows{display:grid;gap:6px}.config-row{display:grid;gap:6px;grid-template-columns:minmax(0,1fr) auto}.config-box input,.config-section input,.nested-config-group input{min-height:32px;padding:4px 8px;font-size:13px}.config-box button,.config-section button:not(.primary){min-height:32px;padding:4px 10px;font-size:13px}.nested-config{display:grid;gap:12px}.nested-config-group{border:1px solid var(--line);border-radius:8px;display:grid;gap:10px;padding:12px}.reservation-config-list{display:grid;gap:12px}.reservation-config-property{border:1px solid var(--line);border-radius:8px;display:grid;gap:12px;padding:12px}.reservation-config-head,.reservation-config-columns{display:grid;gap:10px;grid-template-columns:1.3fr 1fr auto}.reservation-config-columns{grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);align-items:start}.reservation-config-head label,.check-row{display:flex;gap:6px;align-items:center}.reservation-config-head label:not(.check-row){align-items:stretch;flex-direction:column;font-size:12px;color:var(--muted)}.config-section-head.compact{margin:0 0 8px}.config-section-head h4{font-size:14px;margin:0}.reservation-config-row{display:grid;gap:6px;grid-template-columns:80px minmax(120px,1fr) 80px;margin-bottom:6px}.reservation-config-row.unit-row{grid-template-columns:70px minmax(150px,1fr) 80px auto}.nested-type-row{background:var(--bg);border-radius:6px 6px 0 0;padding:6px 12px;margin:-12px -12px 10px;border-bottom:1px solid var(--line)}.nested-type-row input{font-weight:700;background:transparent;border-color:transparent;padding-left:0}.nested-type-row input:focus{border-color:var(--accent);background:#fff;padding-left:8px}.nested-items{padding-left:12px}.login-shell{align-items:center;display:grid;min-height:100vh;padding:18px}.login-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;display:grid;gap:14px;margin:0 auto;max-width:380px;padding:24px;width:100%}.wide-error{grid-column:1 / -1;margin:0}.single-view{padding:18px}.narrow-panel{max-width:560px}.ok-message{color:var(--ok);font-weight:700}@media (max-width: 1100px){.app-shell,.metrics-grid,.report-grid,.config-grid{grid-template-columns:1fr}}@media (max-width: 620px){.topbar{align-items:flex-start;flex-direction:column}.topbar h1{font-size:20px}.col-typ,.col-pracownik,.col-platnosc{display:none}input,select,textarea{font-size:16px}.topbar nav{justify-content:flex-start;width:100%}.user-menu,.user-trigger,.user-menu-panel{width:100%}.user-menu-panel{position:static}.app-shell{padding:10px}.entry-form{grid-template-columns:1fr}.filters,.password-form{align-items:stretch;flex-direction:column}.filters input,.filters select,.password-form input,.password-form button{width:100%}.period-bar label{width:calc(50% - 5px)}.period-bar .primary,.period-label{flex-basis:100%}.config-row,.nested-config-grid,.reservation-config-head,.reservation-config-columns,.reservation-config-row,.reservation-config-row.unit-row{grid-template-columns:1fr}}.log-row.clickable{cursor:pointer}.log-row.clickable:hover td{background:var(--hover-bg, #f5f5f5)}.log-diff-row td{padding:8px 12px;background:var(--diff-bg, #fafafa)}.log-diff-table{width:100%;border-collapse:collapse;font-size:.85rem}.log-diff-table th,.log-diff-table td{padding:4px 10px;text-align:left;border-bottom:1px solid var(--border, #e0e0e0)}.log-diff-table th{font-weight:600;color:var(--muted, #666)}.log-diff-old{color:#b91c1c;text-decoration:line-through}.log-diff-new{color:#15803d}.log-diff-empty{color:var(--muted, #666);font-size:.85rem;padding:4px 10px;margin:0}.tabs{display:flex;gap:0;align-items:center}.tab-btn{background:none;border:none;border-bottom:2px solid transparent;padding:8px 16px;cursor:pointer;color:var(--muted);font-size:13px;font-weight:500;white-space:nowrap;transition:color .15s,border-color .15s;margin-bottom:-2px}.tab-btn:hover{color:var(--text);background:transparent;border-bottom-color:var(--line)}.topbar .tab-btn{color:#ffffffb8}.topbar .tab-btn:hover{color:#fff;background:transparent;border-bottom-color:var(--accent)}.topbar .tab-btn.active{color:#fff;border-bottom-color:var(--accent)}.tab-btn.active{color:var(--accent-dark);border-bottom-color:var(--accent-dark);font-weight:600}.res-root{position:relative}.res-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:12px}.res-grid-wrapper{overflow:auto;max-height:calc(100vh - 180px);border:1px solid var(--line);border-radius:4px}.res-grid{display:grid;min-width:max-content}.res-header-cell{background:var(--panel);font-size:11px;color:var(--muted);text-align:center;font-weight:600;-webkit-user-select:none;user-select:none}.res-unit-col{min-width:90px;max-width:140px;padding:4px 8px;font-size:12px;display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--line)}.res-day-col{width:32px;min-width:32px;min-height:38px;display:grid;align-content:center;justify-items:center;gap:2px;padding:3px 0;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.res-day-number{color:var(--text);font-size:11px;line-height:1}.res-weekday{color:var(--muted);font-size:9px;line-height:1}.res-header-cell.is-saturday{background:#fff4df}.res-header-cell.is-sunday{background:#ffe9e3}.res-header-cell.is-saturday .res-weekday,.res-cell.is-saturday{color:#8a5200}.res-header-cell.is-sunday .res-weekday,.res-cell.is-sunday{color:#9b271d}.res-cell{height:32px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;transition:filter .1s}.res-cell:hover{filter:brightness(.93)}.res-cell.is-saturday{background:#fffaf0}.res-cell.is-sunday{background:#fff5f2}.res-cell.is-selecting{background:#13705a38;box-shadow:inset 0 0 0 2px var(--accent-dark)}.res-block{cursor:pointer;border-radius:3px;z-index:2;overflow:hidden;align-self:center;margin:2px 1px;height:28px;transition:filter .1s}.res-block:hover{filter:brightness(.88)}.res-drawer{position:fixed;right:0;top:0;bottom:0;width:360px;background:var(--panel);border-left:1px solid var(--line);padding:24px 20px;overflow-y:auto;z-index:100;box-shadow:-4px 0 16px #00000014}.res-drawer input,.res-drawer select,.res-drawer textarea{box-sizing:border-box;padding:6px 8px;border:1px solid var(--line);border-radius:4px;font-size:14px;background:var(--bg);color:var(--text)}.res-attachments{border:1px solid var(--line);border-radius:6px;display:grid;gap:8px;margin-bottom:16px;padding:10px}.res-attachments-head,.res-attachment-row{align-items:center;display:flex;gap:8px;justify-content:space-between}.res-attachments-head{font-size:12px;color:var(--muted)}.res-attachments-head em{color:var(--text);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.res-attachment-list{display:grid;gap:6px}.res-attachment-row{background:var(--bg);border-radius:4px;font-size:12px;padding:6px 8px}.res-attachment-row a{color:var(--accent-dark);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.res-drawer input:focus,.res-drawer select:focus,.res-drawer textarea:focus{outline:2px solid var(--accent-dark);outline-offset:-1px}.guest-drop{position:absolute;top:100%;left:0;right:0;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 8px 24px #0000001f;z-index:200;max-height:220px;overflow-y:auto}.guest-drop-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line);font-size:13px}.guest-drop-item:last-child{border-bottom:none}.guest-drop-item:hover{background:var(--hover-bg)}.res-list-mobile{display:none}@media (max-width: 900px){.res-grid-wrapper{display:none}.res-list-mobile{display:block}.res-drawer{width:100%;box-shadow:none;border-left:none;border-top:1px solid var(--line);position:static;overflow-y:visible}}.btn-primary{background:var(--accent-dark);color:#fff;border:none;border-radius:4px;padding:6px 16px;cursor:pointer;font-size:14px;font-weight:500;transition:opacity .15s}.btn-primary:hover{opacity:.85}
