:root{--cream: #faf8f5;--paper: #ffffff;--sand: #e8dfd4;--line: #ebe4db;--taupe: #a38b7b;--taupe-dark: #8c7464;--mocha: #5b4b42;--mocha-soft: #84766d;--gold: #d9a864;--gold-soft: #f3e3c6;--ok: #4f8f5f;--ok-bg: #e3ece4;--warn: #c4902f;--warn-bg: #f6ead2;--bad: #c0524a;--bad-bg: #f3dedb;--info: #5f86a6;--info-bg: #e3edf5;--rose: #c07c82;--rose-bg: #f7e4e6;--plum: #8f78a6;--plum-bg: #ece6f3;--green-bg: #e1efe4;--radius: 16px;--shadow: 0 1px 2px rgba(91, 75, 66, .05), 0 6px 20px rgba(91, 75, 66, .05);--serif: "Lora", Georgia, "Times New Roman", serif;--sans: "Jost", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--cream);color:var(--mocha);font-family:var(--sans);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;font-variant-numeric:lining-nums tabular-nums}h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0;letter-spacing:0}h1{font-size:30px}h2{font-size:22px}h3{font-size:18px}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--mocha-soft)}.small{font-size:13px}.serif{font-family:var(--serif)}.right{text-align:right}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:14px}.gap-s{gap:6px}.app{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100%}.sidebar{background:var(--mocha);color:#f1e9e0;padding:22px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}.brand{padding:4px 10px 18px}.brand img{width:150px;filter:brightness(0) invert(.93);display:block}.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;text-decoration:none;color:#dccfc3;font-weight:400;letter-spacing:.02em}.nav a svg{color:var(--tone, #dccfc3);flex:none}.nav a:hover{background:#ffffff12}.nav a.active{background:#ffffff21;color:#fff;box-shadow:inset 3px 0 0 var(--tone, var(--gold))}.nav .badge{margin-left:auto}.sidebar .foot{margin-top:auto;font-size:13px;color:#bfae9f;padding:8px 10px}.main{padding:28px 34px 60px;max-width:1380px;width:100%;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head p{margin:4px 0 0;color:var(--mocha-soft)}.mobilebar{display:none}.card{min-width:0;overflow-wrap:anywhere;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card.flat{box-shadow:none}.card h3{margin-bottom:12px}.grid{display:grid;gap:16px}.grid>*,.stack>*{min-width:0}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.kpi{display:block;text-decoration:none;color:inherit;cursor:pointer;transition:transform .15s,box-shadow .15s;padding:12px 16px 11px;position:relative;overflow:hidden;border-top:4px solid var(--tone, var(--taupe));background:linear-gradient(180deg,var(--tone-bg, #fff) 0%,#fff 70%)}.kpi:hover{transform:translateY(-2px);box-shadow:0 6px 18px #5b4b4224}.kpi .ico{position:absolute;right:12px;top:12px;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--tone-bg, var(--sand));color:var(--tone, var(--taupe))}.kpi .label{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--mocha-soft);font-weight:500;padding-right:40px}.kpi .value{font-family:var(--serif);font-size:clamp(20px,1.8vw,24px);font-weight:700;line-height:1.15;margin-top:4px;color:var(--tone-dark, var(--mocha));overflow-wrap:anywhere}.kpi .sub{font-size:13px;color:var(--mocha-soft);margin-top:2px}.tone-green{--tone: #4f8f5f;--tone-bg: #e1efe4;--tone-dark: #2f6b40}.tone-red{--tone: #c0524a;--tone-bg: #f8e1de;--tone-dark: #a3392f}.tone-gold{--tone: #d19a3c;--tone-bg: #fbeed3;--tone-dark: #8d6414}.tone-blue{--tone: #5f86a6;--tone-bg: #e3edf5;--tone-dark: #3a6283}.tone-rose{--tone: #c07c82;--tone-bg: #f7e4e6;--tone-dark: #96545b}.tone-plum{--tone: #8f78a6;--tone-bg: #ece6f3;--tone-dark: #6a5282}.tone-taupe{--tone: #a38b7b;--tone-bg: #f1e9e2;--tone-dark: #5b4b42}.card.accent{border-top:4px solid var(--tone)}.card h3 .ico-s{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--tone-bg);color:var(--tone);margin-right:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:999px;border:1px solid var(--taupe);background:var(--taupe);color:#fff;cursor:pointer;font-weight:500;letter-spacing:.02em;text-decoration:none;white-space:nowrap;transition:background .15s,transform .05s}.btn:hover{background:var(--taupe-dark)}.btn:active{transform:translateY(1px)}.btn.ghost{background:transparent;color:var(--mocha);border-color:var(--line)}.btn.ghost:hover{background:var(--sand)}.btn.wa{background:#4f8a5e;border-color:#4f8a5e}.btn.wa:hover{background:#437a52}.btn.danger{background:transparent;border-color:var(--bad);color:var(--bad)}.btn.sm{padding:5px 12px;font-size:13px}.btn.icon{padding:7px;border-radius:10px}.btn:disabled{opacity:.5;cursor:not-allowed}label.field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--mocha-soft);letter-spacing:.03em}.input,select.input,textarea.input{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;color:var(--mocha);width:100%;font-size:15px}textarea.input{min-height:80px;resize:vertical}.input:focus{outline:2px solid var(--gold);outline-offset:0;border-color:var(--gold)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1 / -1}.search{position:relative}.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--mocha-soft)}.search .input{padding-left:38px}.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;background:var(--sand);color:var(--mocha);white-space:nowrap}.chip.ok{background:var(--green-bg);color:#2f6b40}.chip.warn{background:#fbeed3;color:#8d6414}.chip.bad{background:#f8e1de;color:#a3392f}.chip.info{background:var(--info-bg);color:#3a6283}.badge{background:var(--gold);color:#3b2c14;border-radius:999px;font-size:12px;font-weight:600;padding:0 8px;min-width:22px;text-align:center}.tabs{display:flex;flex-wrap:wrap;gap:8px;max-width:100%}.tabs button{border:2px solid var(--taupe);background:#fff;padding:8px 18px;border-radius:999px;cursor:pointer;color:var(--mocha);font-weight:500;font-size:14px;white-space:nowrap;transition:background .15s,box-shadow .15s}.tabs button:hover{background:var(--sand);box-shadow:0 2px 6px #5b4b4226}.tabs button.on{background:var(--mocha);border-color:var(--mocha);color:#fff;font-weight:600;box-shadow:0 2px 8px #5b4b424d}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--mocha-soft);padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:#e8dfd473}tbody tr:last-child td{border-bottom:0}.avatar{width:38px;height:38px;border-radius:50%;background:var(--sand);color:var(--mocha);display:inline-grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:17px;flex:none;border:1px solid var(--line)}.avatar.lg{width:64px;height:64px;font-size:28px}.list-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:0}.empty{color:var(--mocha-soft);padding:18px 4px;text-align:center;font-size:14px}.bars{display:flex;align-items:flex-end;gap:10px;height:150px;padding-top:10px}.bars .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.bars .stackbar{width:100%;max-width:38px;display:flex;flex-direction:column-reverse;border-radius:8px 8px 3px 3px;overflow:hidden}.bars .seg-a{background:var(--taupe)}.bars .seg-b{background:var(--bad);opacity:.55}.bars .seg-g{background:var(--gold)}.bars .lbl{font-size:11px;color:var(--mocha-soft)}.bars .val{font-size:11px;color:var(--mocha)}.funnel .step{display:flex;align-items:center;gap:10px;margin:8px 0}.funnel .bar{height:28px;border-radius:8px;background:linear-gradient(90deg,var(--taupe),var(--gold));min-width:28px;display:flex;align-items:center;padding:0 10px;color:#fff;font-weight:600}.legend{display:flex;gap:14px;font-size:12px;color:var(--mocha-soft);margin-top:8px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:14px;overflow-x:auto;padding-bottom:14px;align-items:start}.col-k{border-top:4px solid var(--tone, var(--taupe));background:#f4efe9;border-radius:var(--radius);padding:12px;min-height:240px;border:1px dashed transparent}.col-k.over{border-color:var(--gold);background:var(--gold-soft)}.col-k header{display:flex;align-items:baseline;justify-content:space-between;padding:2px 4px 10px}.col-k header h3{font-size:16px;margin:0;color:var(--tone-dark, var(--mocha))}.col-k header small{color:var(--mocha-soft);display:block;font-family:var(--sans);font-size:12px;font-weight:400}.k-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;cursor:grab;box-shadow:0 1px 2px #0000000a}.k-card:active{cursor:grabbing}.k-card .name{font-weight:500}.k-card .meta{font-size:12.5px;color:var(--mocha-soft);margin-top:3px}.slot-group{border-left:3px solid var(--gold);padding-left:16px;margin:0 0 22px}.slot-group .time{font-family:var(--serif);font-size:22px;font-weight:700}.att-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-top:8px;flex-wrap:wrap}.att-row.done-ok{background:var(--ok-bg);border-color:#cddccf}.att-row.done-bad{background:var(--bad-bg);border-color:#e7c6c2}.att-row.done-warn{background:var(--warn-bg);border-color:#ead9b3}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}.seg button{border:0;background:transparent;padding:6px 12px;cursor:pointer;font-size:13px;color:var(--mocha-soft);border-right:1px solid var(--line)}.seg button:last-child{border-right:0}.seg button:hover{background:var(--sand)}.seg button.on-ok{background:var(--ok);color:#fff}.seg button.on-warn{background:var(--warn);color:#fff}.seg button.on-bad{background:var(--bad);color:#fff}.week-grid{display:grid;grid-template-columns:64px repeat(6,minmax(110px,1fr));gap:6px;min-width:820px}.week-grid .h{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--mocha-soft);text-align:center;padding:6px 0}.week-grid .t{font-family:var(--serif);font-size:18px;text-align:right;padding-right:8px;padding-top:8px}.cell{background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px 8px;min-height:54px;font-size:12.5px}.cell.full{background:var(--warn-bg);border-color:#ead9b3}.cell .n{display:block;line-height:1.3}.cell .cap{float:right;font-size:11px;color:var(--mocha-soft)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3c2e2673;display:grid;place-items:center;z-index:50;padding:16px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--paper);border-radius:20px;width:min(640px,100%);max-height:92vh;overflow:auto;padding:26px;box-shadow:0 30px 80px #0000004d}.modal.wide{width:min(900px,100%)}.modal h2{margin-bottom:16px}.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--mocha);color:#fff;padding:12px 20px;border-radius:999px;z-index:80;box-shadow:var(--shadow)}.toast.err{background:var(--bad)}.notice{background:var(--gold-soft);border:1px solid #ecd4a6;border-radius:12px;padding:10px 14px;font-size:14px}.notice.bad{background:var(--bad-bg);border-color:#e7c6c2}.dl{display:grid;grid-template-columns:150px 1fr;gap:8px 14px;font-size:14px}.dl dt{color:var(--mocha-soft)}.dl dd{margin:0;word-break:break-word}.public{min-height:100%;display:grid;place-items:start center;padding:28px 16px 60px;background:radial-gradient(900px 420px at 50% -80px,var(--gold-soft),transparent 70%),var(--cream)}.public .sheet{width:min(760px,100%)}.public .logo{display:block;margin:0 auto 8px;width:220px}.public .lead{text-align:center;color:var(--mocha-soft);margin-bottom:22px}.section-title{display:flex;align-items:baseline;gap:12px;margin:26px 0 12px}.section-title .n{font-family:var(--serif);font-size:30px;color:var(--gold);font-weight:600}.section-title h3{font-size:22px;letter-spacing:.06em;text-transform:uppercase;font-family:var(--sans);font-weight:500;font-size:14px}.terms{font-size:14px;color:var(--mocha);background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px}.terms ol{margin:0;padding-left:20px}.terms li{margin:6px 0}.check{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--taupe-dark);flex:none}.big-ok{text-align:center;padding:40px 10px}.big-ok .ring{width:84px;height:84px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;margin:0 auto 16px}.login-wrap{min-height:100%;display:grid;place-items:center;padding:20px;background:radial-gradient(700px 500px at 50% 30%,#fff 0%,transparent 70%),var(--cream)}.login{width:min(400px,100%)}.tv-code{font-family:var(--serif);font-size:80px;letter-spacing:.12em;text-align:center;font-weight:600}@media (max-width: 1100px){.g-main{grid-template-columns:1fr}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.hide-sm{display:none}}@media (max-width: 860px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;left:0;top:0;bottom:0;width:270px;z-index:60;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none}.mobilebar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--mocha);color:#fff;position:sticky;top:0;z-index:40}.mobilebar img{height:34px;filter:brightness(0) invert(.93)}.main{padding:18px 16px 60px}.g2,.g3,.form-grid{grid-template-columns:1fr}.dl{grid-template-columns:110px 1fr}h1{font-size:28px}.hide-sm{display:none}}@media print{.sidebar,.mobilebar,.no-print{display:none!important}.app{display:block}body{background:#fff}}.tabs button.t-ok{border-color:var(--ok);color:var(--ok);background:#eef7f0;font-weight:600}.tabs button.t-ok:hover{background:#dff0e3}.tabs button.t-ok.on{background:var(--ok);border-color:var(--ok);color:#fff}.tabs button.t-off{border-color:#9a948f;color:#6b6560;background:#f0eeec;font-weight:600}.tabs button.t-off:hover{background:#e4e1de}.tabs button.t-off.on{background:#6b6560;border-color:#6b6560;color:#fff}.tabs button.t-ok .muted,.tabs button.t-off .muted{color:inherit;opacity:.8}.cell .n.rep,.rep-name{background:#fde68a;color:#5a4300;font-weight:600;border-radius:6px;padding:0 6px}.cell .n.rep{margin-top:2px}.week-grid .h.hol,.cell.hol{background:#f8d9d4;border-color:#e3b1a9}.week-grid .h.hol{color:#8a2f25;border-radius:10px}.week-grid .h .hol-name{text-transform:none;letter-spacing:0;font-size:11px;line-height:1.2}.week-grid .h.wk,.cell.wk{background:#f1ebe4}.cell.hol.full{background:#f8d9d4}:root{--hol-bg: #fbe4e0;--hol-line: #e3b1a9}.niver-tag{display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding:4px 12px;border-radius:999px;background:#fbe0ea;color:#9a2f57;border:1px solid #efb8cc;font-size:13px;font-weight:600;text-decoration:none;text-transform:none;letter-spacing:0}.niver-tag:hover{background:#f7cfe0}.niver-tag.sm{margin:4px 0 0;padding:2px 8px;font-size:11px}.list-item.hl{background:#fff3c4;border-radius:10px;box-shadow:0 0 0 2px #f0d67a inset}.card.flash{animation:flash 1.6s ease 2}@keyframes flash{50%{box-shadow:0 0 0 4px #f0d67a}}button.fchip{border:1.5px solid transparent;cursor:pointer;font:inherit;font-weight:600;font-size:13px;padding:5px 12px}button.fchip:not(.ok):not(.bad):not(.warn){background:var(--sand);color:var(--mocha)}button.fchip:hover{filter:brightness(.96)}button.fchip.on{border-color:var(--mocha);box-shadow:0 0 0 2px #5b4b422e}
