:root{--bg: #f2f4f7;--paper: #ffffff;--ink: #0c1220;--ink-2: #424b5e;--mute: #8a93a3;--line: #e2e5ec;--line-2: #eff1f5;--accent: #1554b8;--accent-soft: #e8eef9;--warn: #a8423a;--warn-soft: #f7e6e4;--night: #1c2840;--night-soft: #dde2ee;--extra: #9a5a12;--extra-soft: #f5ead6;--row-hover: #f7f9fc;--radius: 8px;--shadow-1: 0 1px 0 rgba(12,18,32,.03), 0 1px 2px rgba(12,18,32,.04), 0 12px 28px -20px rgba(12,18,32,.18)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Geist,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-feature-settings:"ss01","ss02","tnum","cv11"}body{min-height:100vh}.num{font-variant-numeric:tabular-nums}.display{font-family:Geist,sans-serif;font-weight:500;letter-spacing:-.02em}.mono{font-family:Geist Mono,JetBrains Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.app{max-width:1180px;margin:0 auto;padding:32px 28px 80px}header.top{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:18px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px}.brand .logo{width:34px;height:38px;display:inline-flex;align-items:center;justify-content:center}.brand .logo img{display:block;width:100%;height:100%;object-fit:contain;filter:invert(22%) sepia(85%) saturate(1800%) hue-rotate(210deg) brightness(90%) contrast(85%)}.brand h1{font-size:28px;line-height:1;margin:0;font-weight:600;letter-spacing:-.025em;color:var(--ink)}.brand h1 .accent{color:var(--accent);font-weight:500}.brand .tag-mark{display:inline-block;margin-left:10px;padding:4px 8px;border:1px solid var(--line);border-radius:5px;font:500 10px Geist Mono,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);vertical-align:2px}.period{display:flex;align-items:center;gap:14px;color:var(--ink-2);font-size:13px}.period .pill{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:var(--paper);font-weight:500;color:var(--ink);font-size:13px}.period select{appearance:none;border:1px solid var(--line);background:var(--paper);padding:6px 28px 6px 12px;border-radius:6px;font:500 13px Geist,sans-serif;color:var(--ink);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%230c1220' fill='none' stroke-width='1.4' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.lead{display:flex;justify-content:space-between;gap:24px;margin:18px 0 28px;color:var(--ink-2);font-size:13.5px;line-height:1.5}.lead .tag{font-family:Geist Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:500}.grid{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}@media(max-width:960px){.grid{grid-template-columns:1fr}}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-1)}.card .head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line-2)}.card .head h2{margin:0;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:600}.card .head .meta{font-size:12px;color:var(--mute)}.card .body{padding:8px 0}table.days{width:100%;border-collapse:collapse;font-size:14px}table.days th,table.days td{padding:10px 14px;text-align:left;vertical-align:middle}table.days thead th{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);font-weight:600;border-bottom:1px solid var(--line-2)}table.days tbody tr{border-bottom:1px solid var(--line-2)}table.days th.col-num,table.days td.col-num{max-width:84px;width:84px;min-width:84px}table.days th.col-sub,table.days td.col-sub{max-width:128px;width:128px;min-width:128px}table.days tbody tr:last-child{border-bottom:0}table.days tbody tr:hover{background:var(--row-hover)}table.days td.right{text-align:right}table.days td.center{text-align:center}table.days .day-num{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:13px;font-variant-numeric:tabular-nums}table.days input[type=text],table.days input[type=number],table.days input[type=time]{width:100%;background:transparent;border:0;outline:0;font:inherit;color:var(--ink);padding:4px 6px;border-radius:4px;font-variant-numeric:tabular-nums}table.days input:focus{background:#fff;box-shadow:inset 0 0 0 1px var(--accent)}table.days .time-pair{display:flex;align-items:center;gap:4px}table.days .time-pair span{color:var(--mute);font-size:11px}.date-cell{position:relative;display:flex;align-items:center;gap:0}.date-chip{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:46px;height:46px;border-radius:10px;background:var(--accent-soft);color:var(--accent);line-height:1;padding:5px 0;pointer-events:none;border:1px solid transparent;transition:border-color .12s,background .12s}.date-chip .wd{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;opacity:.9;font-family:Geist Mono,monospace}.date-chip .dn{font-family:Geist,sans-serif;font-weight:500;font-size:20px;line-height:1;margin-top:3px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.date-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;background:transparent;font-size:11px}.date-cell:hover .date-chip{background:#d8e2f4;border-color:var(--accent)}.date-input:focus+.date-chip,.date-cell:focus-within .date-chip{border-color:var(--accent);box-shadow:0 0 0 3px #1554b829}.night-toggle{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--paper);padding:4px 9px;border-radius:999px;font:600 11px Geist,sans-serif;letter-spacing:.02em;color:var(--ink-2);cursor:pointer;transition:all .12s;margin-left:6px}.night-toggle:hover{border-color:var(--night);color:var(--night)}.night-toggle.on{background:var(--night);color:var(--night-soft);border-color:var(--night)}.night-toggle.on:hover{filter:brightness(1.1)}.night-toggle svg{flex-shrink:0}table.days .hrs{font-variant-numeric:tabular-nums;font-weight:500}table.days .hrs.night{color:var(--night)}table.days .hrs.normal{color:var(--ink)}table.days .hrs.extra{color:var(--extra);font-weight:600}table.days .hrs.muted{color:var(--mute)}table.days td.sub{font-family:Geist Mono,monospace;font-size:13px;font-weight:500;color:var(--ink);letter-spacing:-.01em}table.days .del{background:transparent;border:0;cursor:pointer;color:var(--mute);width:24px;height:24px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s,color .12s,background .12s}table.days tr:hover .del{opacity:1}table.days .del:hover{background:var(--warn-soft);color:var(--warn)}.table-foot{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-top:1px solid var(--line-2);background:#f8fafd}.add-btn{display:inline-flex;align-items:center;gap:8px;border:1px dashed var(--line);background:transparent;color:var(--ink-2);font:500 13px Geist,sans-serif;padding:8px 14px;border-radius:var(--radius);cursor:pointer}.add-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.add-btn .plus{font-size:16px;line-height:1}.totals-row{display:flex;gap:24px;font-size:13px;color:var(--ink-2);align-items:center}.totals-row b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}.chip-n{display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--ink);vertical-align:middle;margin-right:6px}.chip-noc{background:var(--night)}.chip-extra{background:var(--extra)}.modes{display:inline-flex;gap:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--paper);font-size:11px}.modes button{background:transparent;border:0;padding:4px 9px;font:500 11px Geist,sans-serif;color:var(--ink-2);cursor:pointer;transition:all .12s}.modes button:hover{color:var(--ink)}.modes button.on{background:var(--ink);color:var(--paper)}.stack>*+*{margin-top:16px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600}.field .input{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff}.field .input .prefix,.field .input .suffix{color:var(--mute);font-size:12px;font-family:Geist Mono,monospace}.field .input input{border:0;outline:0;background:transparent;width:100%;font:500 14px Geist Mono,monospace;color:var(--ink);letter-spacing:-.01em}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px 6px}.section-title h3{margin:0;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);font-weight:700}.section-body{padding:0 18px 16px}.switch{position:relative;width:34px;height:20px;border-radius:999px;background:#c8cdd6;cursor:pointer;transition:background .15s;flex-shrink:0}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:left .15s}.switch.on{background:var(--accent)}.switch.on:after{left:16px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:6px;background:#fff}.toggle-row .lbl{font-size:13px;font-weight:500}.toggle-row .sub{font-size:11.5px;color:var(--mute)}.extra{display:grid;grid-template-columns:26px 1fr 100px 60px 24px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-2)}.extra:last-child{border-bottom:0}.extra input[type=text]{border:0;background:transparent;outline:0;font:500 13.5px Geist,sans-serif;color:var(--ink);padding:4px 6px;width:100%}.extra input[type=number]{border:0;background:transparent;outline:0;font:500 13px Geist Mono,monospace;color:var(--ink);text-align:right;width:100%;padding:4px 6px;letter-spacing:-.01em}.extra input:focus{background:#eef3fb;border-radius:4px}.extra .typebtn{border:1px solid var(--line);background:#fff;padding:4px 6px;font:500 11px Geist Mono,monospace;border-radius:4px;cursor:pointer;color:var(--ink-2)}.extra .typebtn.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.extra .del{background:transparent;border:0;cursor:pointer;color:var(--mute);font-size:14px}.extra .del:hover{color:var(--warn)}.extra .sign{font-family:Geist Mono,monospace;font-size:11px;color:var(--mute);text-align:center}.summary{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:22px 22px 24px;box-shadow:var(--shadow-1);position:sticky;top:20px;overflow:hidden}.summary:before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;background:var(--accent)}.summary .line{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;font-size:13px;color:var(--ink-2);border-bottom:1px solid var(--line-2)}.summary .line:last-child{border-bottom:0}.summary .line .v{font-family:Geist Mono,monospace;color:var(--ink);font-weight:500;letter-spacing:-.01em}.summary .line.neg .v{color:var(--warn)}.summary .total{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:16px;padding-top:18px;border-top:1px solid var(--ink)}.summary .total .lbl{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);font-weight:600}.summary .total .v{font-family:Geist,sans-serif;font-weight:500;font-size:40px;line-height:1.05;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.035em}.summary .total .v small{font-size:16px;color:var(--mute);margin-right:4px;font-family:Geist Mono,monospace;font-weight:500;letter-spacing:-.01em;vertical-align:4px}.breakdown-hint{font-size:11.5px;color:var(--mute);margin-top:14px;line-height:1.5}.note{font-size:11.5px;color:var(--mute);margin-top:12px;padding:10px 14px;background:#eef3fb;border-radius:6px;border:1px solid var(--line-2);line-height:1.55}@keyframes fadeIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}tbody tr{animation:fadeIn .18s ease-out both}table.days th:first-child,table.days td:first-child{padding-left:18px}table.days th:last-child,table.days td:last-child{padding-right:14px}.empty{padding:36px 18px;text-align:center;color:var(--mute);font-size:13px}.empty .serif{font-size:24px;color:var(--ink-2);display:block;margin-bottom:6px}.hint{font-size:11px;color:var(--mute);margin-top:4px;line-height:1.4}.row-actions{display:flex;gap:6px}.quick-mode{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2)}.field .input.invalid{border-color:var(--warn)}.field .error-msg{font-size:11px;color:var(--warn);margin-top:2px;line-height:1.4}.save-ind{font-size:11px;color:var(--accent);opacity:0;transition:opacity .3s}.save-ind.show{opacity:1}.days-mobile{display:none}.day-card{padding:14px 16px;border-bottom:1px solid var(--line-2)}.day-card:last-child{border-bottom:0}.day-card-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}.day-card-top .del{opacity:1;margin-left:auto;background:transparent;border:0;cursor:pointer;color:var(--mute);width:28px;height:28px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;transition:color .12s,background .12s}.day-card-top .del:hover,.day-card-top .del:focus-visible{background:var(--warn-soft);color:var(--warn)}.day-card-input{margin-bottom:10px}.day-card-input .time-pair{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.day-card-input input[type=time],.day-card-input input[type=text]{border:1px solid var(--line);border-radius:6px;padding:8px 10px;font:500 14px Geist Mono,monospace;color:var(--ink);background:#fff}.day-card-input input[type=time]{width:110px}.day-card-input input[type=text]{width:90px}.day-card-input input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #1554b81f;outline:none}.day-card-bottom{display:flex;justify-content:space-between;align-items:baseline;margin-top:2px}.day-card-hours{display:flex;gap:10px;font-size:12px}.day-card-hours .hrs{font-variant-numeric:tabular-nums;font-weight:500}.day-card-sub{font-family:Geist Mono,monospace;font-size:14px;font-weight:600;color:var(--ink);letter-spacing:-.01em}@media(max-width:960px){.summary{position:static}}@media(max-width:640px){.app{padding:20px 16px 60px}header.top{flex-direction:column;align-items:flex-start;gap:12px}.period{width:100%;justify-content:flex-start}.lead{flex-direction:column;gap:8px}.days-table-wrap{display:none}.days-mobile{display:block}.table-foot{flex-direction:column;gap:12px;align-items:stretch}.totals-row{flex-wrap:wrap;gap:8px 16px;justify-content:flex-start}.table-foot .add-btn{width:100%;justify-content:center}.extra{grid-template-columns:26px 1fr 80px 50px 24px;gap:6px}.row2{grid-template-columns:1fr}.section-body{padding:0 16px 16px}.section-title{padding:14px 16px 6px}.card .head{padding:12px 16px}.brand h1{font-size:22px}.summary .total .v{font-size:32px}.note{margin-top:10px;padding:8px 12px}}@media(max-width:380px){.app{padding:16px 12px 48px}.brand h1{font-size:20px}.day-card{padding:12px}.day-card-input input[type=time]{width:95px}.extra{grid-template-columns:24px 1fr 70px 46px 22px;gap:4px}}
