.chip{border-radius:var(--radius-pill);border:1.5px solid var(--separator);background:var(--bg-secondary);min-height:38px;color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;padding:8px 14px;font-family:inherit;font-size:13.5px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.chip--active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--bg-secondary))}.chip:active{transform:scale(.96)}.filter-sheet__results{margin-top:var(--space-2);border:1px solid var(--separator);border-radius:var(--radius-m);max-height:40vh;overflow:hidden auto}.filter-sheet__hint{padding:var(--space-3) var(--space-4);color:var(--text-secondary);font-size:13px}.filter-sheet__result{text-align:left;width:100%;padding:10px var(--space-4);border:none;border-bottom:1px solid var(--separator);color:var(--text);font:inherit;cursor:pointer;background:0 0;flex-direction:column;gap:2px;display:flex}.filter-sheet__result:last-child{border-bottom:none}.filter-sheet__result:active{background:var(--bg-secondary)}.filter-sheet__result-main{font-size:13.5px;font-weight:600}.filter-sheet__result-sub{color:var(--text-secondary);font-size:12px}.filter-section{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--separator)}.filter-section__title{color:var(--text-secondary);margin-bottom:var(--space-2);font-size:12.5px;font-weight:500}.filter-sheet__chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.filter-sheet__date-row{gap:var(--space-2);display:flex}.filter-sheet__date-row .field__control{flex:1}.filter-sheet__date-row .btn{width:auto;padding-left:var(--space-4);padding-right:var(--space-4);flex-shrink:0}.legend{gap:6px var(--space-4);padding:var(--space-2) var(--space-4);color:var(--text-secondary);border-bottom:1px solid var(--separator);flex-wrap:wrap;flex-shrink:0;font-size:12px;display:flex}.legend__item{align-items:center;gap:5px;display:inline-flex}.legend__dot{border-radius:3px;width:9px;height:9px;display:inline-block}.legend__dot--pending{background:var(--status-pending)}.legend__dot--awaiting{background:var(--status-awaiting)}.legend__dot--confirmed{background:var(--status-confirmed)}.legend__dot--completed{background:var(--status-completed)}.legend__dot--unlinked{border:2px solid var(--unlinked-ring);background:0 0;width:5px;height:5px}.topbar{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--separator);background:var(--bg);flex-shrink:0;display:flex}.topbar__nav{background:var(--bg-secondary);width:36px;height:36px;color:var(--text);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;line-height:1;display:flex}.topbar__nav:active{transform:scale(.92)}.topbar__search{background:var(--bg-secondary);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:flex}.topbar__search:active{transform:scale(.92)}.topbar__range{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.topbar__range-text{font-size:14.5px;font-weight:600}.topbar__today{color:var(--link);cursor:pointer;background:0 0;border:none;padding:0;font-size:12.5px;font-weight:600}.sheet-overlay{z-index:100;background:0 0;align-items:flex-end;transition:background .22s;display:flex;position:fixed;inset:0}.sheet-overlay--visible{background:var(--overlay)}.sheet{background:var(--bg-elevated);width:100%;max-height:88vh;color:var(--text);border-radius:var(--radius-l) var(--radius-l) 0 0;padding:10px var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom));box-shadow:var(--shadow-elevated);transition:transform .26s cubic-bezier(.32,.72,0,1);position:relative;overflow-y:auto;transform:translateY(100%)}.sheet--visible{transform:translateY(0)}.sheet__handle{border-radius:var(--radius-pill);background:var(--separator);width:36px;height:4px;margin:6px auto 12px}.sheet__close{background:var(--bg-secondary);width:30px;height:30px;color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:flex;position:absolute;top:12px;right:14px}.sheet__content{padding-top:2px}.fab{right:18px;bottom:calc(20px + env(safe-area-inset-bottom));background:var(--accent);width:56px;height:56px;color:var(--accent-text);cursor:pointer;box-shadow:var(--shadow-elevated);z-index:50;border:none;border-radius:50%;font-size:28px;line-height:1;transition:transform .15s;position:fixed}.fab:active{transform:scale(.92)}.placeholder{text-align:center;color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:40px 28px;display:flex}.placeholder__icon{margin-bottom:4px;font-size:42px}.placeholder__title{color:var(--text);font-size:16px;font-weight:700}.placeholder__text{max-width:280px;font-size:13.5px}.spinner{border-style:solid;border-color:var(--separator);border-top-color:var(--accent);border-radius:50%;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast{left:50%;bottom:calc(86px + env(safe-area-inset-bottom));border-radius:var(--radius-pill);text-align:center;max-width:min(92vw,420px);box-shadow:var(--shadow-elevated);z-index:200;cursor:pointer;padding:12px 18px;font-size:13.5px;font-weight:500;animation:.22s toast-in;position:fixed;transform:translate(-50%)}.toast--info{background:var(--text);color:var(--bg)}.toast--error{background:var(--status-pending);color:#fff}.toast--success{background:var(--status-confirmed);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.btn{appearance:none;border-radius:var(--radius-m);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;width:100%;min-height:46px;padding:13px 16px;font-size:15px;font-weight:600;transition:transform .12s,opacity .12s,filter .12s;display:inline-flex}.btn:active:not(:disabled){filter:brightness(.94);transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn--primary{background:var(--accent);color:var(--accent-text)}.btn--secondary{background:var(--bg-secondary);color:var(--text)}.btn--success{background:var(--status-confirmed);color:#fff}.btn--warning{background:var(--status-awaiting);color:#fff}.btn--danger{background:var(--status-pending);color:#fff}.btn--ghost{color:var(--link);background:0 0;min-height:auto;padding:8px 10px}.field{margin:var(--space-3) 0;display:block}.field__label{color:var(--text-secondary);margin-bottom:6px;font-size:12.5px;font-weight:500;display:block}.field__control{border-radius:var(--radius-m);border:1px solid var(--separator);background:var(--bg-secondary);width:100%;color:var(--text);padding:12px 13px;font-family:inherit;font-size:16px}.field__control:focus{border-color:var(--accent);outline:none}.field__control--invalid{border-color:var(--status-pending)}.field__error{color:var(--status-pending);margin-top:5px;font-size:12px;display:block}.field-row{gap:var(--space-3);display:flex}.field-row .field{flex:1}.sheet-title{flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0 14px;font-size:18px;font-weight:700;display:flex}.status-pill{border-radius:var(--radius-pill);color:#fff;padding:4px 9px;font-size:11.5px;font-weight:700}.status-pill--pending{background:var(--status-pending)}.status-pill--awaiting{background:var(--status-awaiting)}.status-pill--confirmed{background:var(--status-confirmed)}.detail-rows{background:var(--bg-secondary);border-radius:var(--radius-m);padding:4px var(--space-4);margin-bottom:var(--space-4)}.detail-row{justify-content:space-between;gap:var(--space-3);border-bottom:1px solid var(--separator);padding:9px 0;font-size:14px;display:flex}.detail-row:last-child{border-bottom:none}.detail-row__label{color:var(--text-secondary)}.detail-row__value{text-align:right;font-weight:600}.sheet-actions{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.link-form{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--separator)}.timeline{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.timeline__scroll{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.timeline__grid{min-width:100%;display:inline-block}.timeline__header,.timeline__row{grid-template-columns:var(--label-w) repeat(var(--n-days), var(--day-w));display:grid}.timeline__header{z-index:3;background:var(--bg);border-bottom:1px solid var(--separator);position:sticky;top:0}.timeline__corner{z-index:4;background:var(--bg);position:sticky;left:0}.timeline__day-cell{border-left:1px solid var(--separator);flex-direction:column;justify-content:center;align-items:center;padding:6px 0;display:flex}.timeline__weekday{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em;font-size:9.5px}.timeline__daynum{margin-top:1px;font-size:13.5px;font-weight:600}.timeline__day-cell--weekend .timeline__weekday,.timeline__day-cell--weekend .timeline__daynum{color:var(--status-pending)}.timeline__day-cell--today{background:color-mix(in srgb, var(--accent) 10%, transparent)}.timeline__day-cell--today .timeline__daynum{color:var(--accent)}.timeline__label{z-index:2;background:var(--bg);padding:0 var(--space-3);border-right:1px solid var(--separator);border-bottom:1px solid var(--separator);text-overflow:ellipsis;white-space:nowrap;align-items:center;font-size:13px;font-weight:600;display:flex;position:sticky;left:0;overflow:hidden}.timeline__lane{height:var(--row-h);border-bottom:1px solid var(--separator);grid-column:2/-1;position:relative}.timeline__bg-cell{width:var(--day-w);border-left:1px solid var(--separator);cursor:pointer;position:absolute;top:0;bottom:0}.timeline__bg-cell--weekend{background:color-mix(in srgb, var(--status-pending) 4%, transparent)}.timeline__bg-cell--today{background:color-mix(in srgb, var(--accent) 6%, transparent)}.timeline__bg-cell:active{background:color-mix(in srgb, var(--accent) 14%, transparent)}.timeline__today-line{background:var(--accent);opacity:.55;pointer-events:none;z-index:1;width:2px;position:absolute;top:0;bottom:0}.timeline__hint{justify-content:space-between;align-items:center;gap:var(--space-2);padding:8px var(--space-3);background:color-mix(in srgb, var(--accent) 12%, var(--bg));border-bottom:1px solid var(--separator);color:var(--text);font-size:12.5px;display:flex}.timeline__hint-cancel{color:var(--accent);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:12.5px;font-weight:600}.timeline__row--picking .timeline__lane{background:color-mix(in srgb, var(--accent) 5%, transparent)}.timeline__bg-cell--pick-start{outline:2px solid var(--accent);outline-offset:-2px;z-index:1;background:color-mix(in srgb, var(--accent) 35%, transparent)!important}.timeline__empty{text-align:center;color:var(--text-secondary);padding:60px 24px}.booking-bar{border-radius:var(--radius-s);color:#fff;white-space:nowrap;cursor:pointer;z-index:2;align-items:center;padding:0 7px;font-size:11.5px;font-weight:700;transition:transform .1s;display:flex;position:absolute;top:5px;bottom:5px;overflow:hidden;box-shadow:0 1px 3px #0003}.booking-bar:active{transform:scale(.96)}.booking-bar--pending{background:var(--status-pending)}.booking-bar--awaiting_payment{background:var(--status-awaiting)}.booking-bar--confirmed{background:var(--status-confirmed)}.booking-bar--completed{background:var(--status-completed)}.booking-bar--unlinked{outline:2px dashed var(--unlinked-ring);outline-offset:-2px}.app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.app__loading{flex:1;justify-content:center;align-items:center;display:flex}:root{--bg:var(--tg-theme-bg-color,#fff);--bg-secondary:var(--tg-theme-secondary-bg-color,#f4f4f5);--bg-elevated:var(--tg-theme-bg-color,#fff);--text:var(--tg-theme-text-color,#0f0f10);--text-secondary:var(--tg-theme-hint-color,#8b8b93);--accent:var(--tg-theme-button-color,#3b82f6);--accent-text:var(--tg-theme-button-text-color,#fff);--link:var(--tg-theme-link-color,#3b82f6);--separator:#78788038;--overlay:#0a0a0f80;--status-pending:#ff5c5c;--status-pending-soft:#ff5c5c24;--status-awaiting:#ffa83d;--status-awaiting-soft:#ffa83d29;--status-confirmed:#30c46e;--status-confirmed-soft:#30c46e24;--status-completed:#9a9aa2;--status-completed-soft:#9a9aa229;--unlinked-ring:#af52de;--radius-s:8px;--radius-m:12px;--radius-l:18px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--shadow-soft:0 2px 10px #0f0f1414;--shadow-elevated:0 8px 28px #0f0f142e;--day-w:40px;--row-h:46px;--label-w:92px;--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-tg-theme]){--bg:#17181c;--bg-secondary:#1f2024;--bg-elevated:#232428;--text:#f2f2f3;--text-secondary:#8b8b93;--separator:#8c8c9647}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);overscroll-behavior-y:contain;-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.35}button{font-family:inherit}::selection{background:color-mix(in srgb, var(--accent) 30%, transparent)}
