:root{color-scheme:light;--bg:#f6f5f0;--paper:#fffefb;--ink:#26392f;--muted:#7b837b;--line:#e8e9e1;--green:#335d48;--green-soft:#eaf1e8;--shadow:0 14px 45px #293b2d08;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}button,input{font:inherit}button,a,input,label{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{touch-action:manipulation}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #c79b5b;outline-offset:3px}button,input{border-radius:12px}a{color:inherit;text-decoration:none}[hidden]{display:none!important}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.app{max-width:900px;margin:auto;padding:38px 30px 24px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:34px;gap:16px}.brand{display:flex;align-items:center;gap:14px}.brand>svg{width:46px;height:46px;color:#c17b45;stroke-width:1.5}.brand>svg circle{fill:#f2d59f}.brand>span{font-family:Georgia,"Times New Roman",serif;font-size:24px;font-weight:bold;line-height:1.02;letter-spacing:-.7px}.brand-dot{color:#c17b45}.header-actions{display:flex;gap:8px;align-items:center}.edit-button{display:flex;align-items:center;gap:9px;min-height:44px;padding:10px 17px;border:1px solid #d9ddd2;background:transparent;font-size:13px;font-weight:650}.edit-button:hover{background:#e9eddf}.edit-button.unlocked{background:var(--green);border-color:var(--green);color:#fff}.edit-button svg{width:17px;height:17px}.calendar{background:var(--paper);border:1px solid #e4e6dc;border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.calendar-toolbar{padding:28px 30px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px}.period p{margin:0 0 7px;text-transform:uppercase;font-size:11px;font-weight:650;letter-spacing:2px;color:var(--muted)}h1{font-family:Georgia,"Times New Roman",serif;font-size:30px;font-weight:normal;letter-spacing:-.7px;margin:0;text-transform:capitalize}.navigation{display:flex;align-items:center;gap:3px}.icon-button{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;width:44px;height:44px;flex-shrink:0}.icon-button:hover{background:#eeefe7}.today-button{font-size:12px;font-weight:600;border:0;background:#f4f4ee;padding:11px 13px;min-height:44px}.view-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 30px 24px;gap:10px}.segmented{display:flex;background:#efefe8;padding:4px;border-radius:12px;gap:2px}.segmented button{border:0;background:transparent;padding:8px 16px;font-size:12px;font-weight:650;min-height:36px;border-radius:8px;color:#777e74}.segmented button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:0 1px 5px #2435290c}.date-jump{display:flex;align-items:center;gap:8px;color:var(--muted);border:1px solid var(--line);padding:4px 9px;border-radius:10px;max-width:172px;height:44px}.date-jump svg{width:17px;height:17px;flex-shrink:0}.date-jump input{font-size:12px;border:0;background:transparent;width:124px;color:var(--ink);min-width:0;height:34px;padding:0}.calendar-head,.day-row{display:grid;grid-template-columns:110px repeat(3,minmax(0,1fr));padding:0 24px;align-items:stretch}.calendar-head{height:57px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafaf6;align-items:center}.calendar-head>span{text-align:center}.avatar{display:inline-flex;align-items:center;justify-content:center;width:31px;height:31px;font-style:normal;font-weight:750;font-size:12px;border-radius:50%}.person-j{background:#e8edee;color:#526773}.person-r{background:#f0e8dc;color:#9a7248}.person-k{background:#e8ecdf;color:#5f7552}.day-row{min-height:78px;border-bottom:1px solid #eeeee7;position:relative}.day-row:last-child{border-bottom:0}.day-row.weekend{background:#fcfbf6}.day-row.is-today{background:#f0f5ec}.day-row.is-today:before{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green);content:""}.day-date,.status-cell{border:0;background:none;margin:0;border-radius:0;min-width:0;min-height:66px}.day-date{text-align:left;padding:12px 0;display:flex;align-items:center;gap:12px}.day-number{font-size:23px;font-weight:500;letter-spacing:-.8px;width:32px;flex-shrink:0;text-align:center}.is-today .day-number{background:var(--green);color:#fff;border-radius:11px;height:36px;display:flex;align-items:center;justify-content:center;font-size:20px}.day-name{font-size:11px;color:var(--muted);text-transform:capitalize}.today-label{display:block;font-size:9px;color:var(--green);margin-top:3px}.status-cell{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:10px 5px}.status-cell:hover,.day-date:hover{background:#526c4110}.status{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;line-height:1.25;font-weight:600;min-height:29px;border-radius:7px;padding:6px 11px;white-space:nowrap}.status:before{content:"";display:inline-block;width:5px;height:5px;flex-shrink:0;border-radius:50%;background:currentColor;opacity:.7}.status-M{background:#faf0d9;color:#997529}.status-A{background:#e8eef7;color:#5c77a1}.status-N{background:#eee8f6;color:#84679b}.status-work{background:#eeefed;color:#72796f}.status-rest,.status-free{background:#e7efe3;color:#5a7950}.status-unavailable{background:#f8e8e3;color:#a55e4b}.override{box-shadow:inset 0 0 0 1px currentColor}.base-status{font-size:10px;color:#858b81;line-height:1.2}.note-preview{font-size:10px;color:#777d74;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.week-divider{padding:11px 28px;font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:600;color:#8b9186;background:#f8f8f2;border-bottom:1px solid var(--line)}.footer{display:flex;justify-content:space-between;align-items:center;padding:10px 8px;font-size:11px;color:#92988e}.footer>span{display:flex;align-items:center;gap:6px}.small-dot{width:5px;height:5px;border-radius:50%;background:#9aaf8d}.text-button{background:transparent;border:0;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;color:#92988e}.text-button svg{width:17px;height:17px}.loading,.load-error{padding:60px 20px;text-align:center;color:var(--muted);font-size:14px}.load-error button{border:1px solid var(--line);background:var(--bg);padding:12px 20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.modal{border:1px solid #e3e6da;border-radius:22px;padding:26px;width:calc(100% - 32px);max-width:430px;color:var(--ink);background:var(--paper);box-shadow:0 24px 100px #142d2b30;max-height:calc(100dvh - 36px);overflow-y:auto}.modal::backdrop{background:#26352d66;backdrop-filter:blur(3px)}.modal-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:22px}.modal-heading h2{font-family:Georgia,serif;font-size:23px;line-height:1.15;font-weight:normal;letter-spacing:-.5px;margin:0}.close-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;font-size:28px;font-weight:300;background:#f1f2eb;border:0;border-radius:50%;color:#788170}.modal label{font-size:12px;font-weight:600}.modal input[type=password],.modal input[type=text],.modal input[type=date]{width:100%;border:1px solid #dce0d4;background:#fffefb;padding:13px 12px;min-height:46px;color:var(--ink);font-size:16px}.modal input[type=date]{margin-top:7px;min-width:0;font-size:14px}.password-field{position:relative;margin-top:9px}.password-field input{padding-right:46px!important}.password-field button{position:absolute;right:2px;top:2px;bottom:2px;width:42px;border:0;background:none;color:#828b7d}.password-field svg{width:19px;height:19px}.primary-button{width:100%;min-height:48px;background:var(--green);border:1px solid var(--green);color:#fff;border-radius:12px;font-size:14px;font-weight:600;padding:12px 16px}.primary-button:hover{background:#254d3a}.form-error{font-size:12px;color:#a8513c;line-height:1.5;margin:12px 0;min-height:0}.form-error:empty{margin-top:18px}.person-picker{display:flex;gap:10px;margin:0 0 22px;border:0;padding:0}.person-picker label{flex:1}.person-picker span{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:11px;font-size:17px;border:2px solid transparent}.person-picker input{position:absolute;opacity:0;width:1px;height:1px}.person-picker input:checked+span{border-color:currentColor}.person-picker input:focus-visible+span{outline:3px solid #c79b5b;outline-offset:2px}.date-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.date-fields label{min-width:0}.base-preview{font-size:11px;color:#899080;margin:10px 0 20px;min-height:14px}.status-picker{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;border:0;padding:0;margin:0 0 22px}.status-picker input{position:absolute;opacity:0;width:1px;height:1px}.status-picker span{display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid #dfe4d7;border-radius:10px;font-size:12px;font-weight:500;padding:12px 4px;min-height:45px}.status-picker b{font-size:16px;font-weight:400}.status-picker input:checked+span{color:var(--green);background:#edf2e8;border-color:var(--green)}.status-picker input[value=unavailable]:checked+span{color:#a55e4b;background:#f8ebe6;border-color:#b87561}.status-picker input:focus-visible+span{outline:3px solid #c79b5b;outline-offset:2px}.note-label{display:flex;justify-content:space-between;margin-bottom:8px}.note-label span{color:#9a9e93;font-weight:400}.detail-person{display:grid;grid-template-columns:35px 1fr auto;gap:12px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.detail-person:first-child{padding-top:0}.detail-person:last-child{margin-bottom:22px}.detail-name{font-size:13px;font-weight:600}.detail-note,.detail-base{display:block;color:var(--muted);font-size:12px;font-weight:400;margin-top:4px;overflow-wrap:anywhere}.toast{position:fixed;z-index:20;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#294837;color:white;border-radius:12px;padding:13px 22px;box-shadow:0 4px 25px #12351e20;font-size:13px;text-align:center;max-width:calc(100% - 32px);width:max-content;pointer-events:none}
@media(min-width:750px){.app{padding-top:50px}.topbar{margin-bottom:42px}.brand>span{font-size:28px}.calendar-toolbar{padding-top:32px}.day-row{min-height:81px}.calendar-head,.day-row{grid-template-columns:160px repeat(3,minmax(0,1fr));padding-left:34px;padding-right:34px}.day-name{font-size:12px}.day-date{gap:18px}.status{font-size:13px;padding:7px 15px}.calendar.month-view .day-row{min-height:62px}.calendar.month-view .day-date,.calendar.month-view .status-cell{min-height:58px}.calendar.month-view .day-number{font-size:21px}}
@media(max-width:540px){.app{padding:21px 12px 16px}.topbar{margin:0 7px 25px}.brand{gap:10px}.brand>svg{width:35px;height:35px}.brand>span{font-size:21px}.edit-button{padding:10px 12px;font-size:12px;gap:7px}.header-actions{gap:2px}.logout{width:36px}.calendar{border-radius:19px}.calendar-toolbar{padding:22px 17px 17px;align-items:flex-start;gap:6px}.period p{font-size:10px;letter-spacing:1.5px;margin-bottom:5px}h1{font-size:24px;line-height:1.2}.navigation{gap:0;padding-top:12px}.navigation .icon-button{width:33px;height:37px}.today-button{padding:8px 7px;min-height:37px;font-size:10px;background:transparent}.view-toolbar{padding:0 16px 19px}.segmented button{font-size:11px;padding:7px 12px;min-height:32px}.date-jump{max-width:139px;padding:3px 6px;gap:4px;height:40px}.date-jump input{width:111px;font-size:11px}.date-jump>svg{display:none}.calendar-head,.day-row{grid-template-columns:65px repeat(3,minmax(0,1fr));padding-left:12px;padding-right:10px}.calendar-head{height:51px}.day-date{gap:5px;align-items:flex-start;justify-content:center;flex-direction:column;padding-left:2px}.day-number{font-size:23px;width:30px;text-align:left;line-height:1.1}.day-name{font-size:10px}.is-today .day-number{font-size:19px;width:31px;height:31px;margin-left:-4px;margin-top:-5px}.today-label{display:none}.day-row{min-height:73px}.status-cell{padding:10px 2px}.status{font-size:10px;padding:6px 6px;gap:4px;border-radius:6px;min-height:27px}.status:before{width:4px;height:4px}.base-status,.note-preview{font-size:9px}.week-divider{padding:10px 16px;font-size:9px}.avatar{width:28px;height:28px;font-size:11px}.modal{padding:22px 20px}.modal-heading h2{font-size:22px}.modal:not(.login-modal){margin:auto auto 0;max-height:calc(100dvh - 16px);border-radius:23px 23px 0 0;width:100%;max-width:100%;padding-bottom:max(24px,env(safe-area-inset-bottom))}.footer{padding-top:6px}}
@media(max-width:355px){.brand>span{font-size:19px}.brand>svg{width:30px;height:30px}.edit-button{padding:9px}.calendar-toolbar{padding-left:13px;padding-right:9px}h1{font-size:21px}.calendar-head,.day-row{grid-template-columns:53px repeat(3,minmax(0,1fr));padding-left:10px;padding-right:6px}.status{font-size:9px;padding:6px 4px;gap:3px}.view-toolbar{padding-left:10px;padding-right:10px}.segmented button{padding:7px 9px}.date-jump{max-width:127px}.today-button{font-size:9px}.navigation .icon-button{width:28px}}
.brand>span{white-space:nowrap}.calendar{overflow:clip}.calendar-head{position:sticky;top:0;z-index:2}
@media(max-width:540px){.status{font-size:12px}.avatar{font-size:13px}.base-status,.note-preview{font-size:10px}}
@media(max-width:355px){.status{font-size:11px}.status:before{display:none}}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s,color .15s,opacity .15s}.modal[open]{animation:appear .18s ease-out}.toast{animation:appear .18s ease-out}@keyframes appear{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}}
