:root{--primary:#db2777;--primary-hover:#e04090;--primary-bg:#db27771a;--primary-border:#db277733;--secondary:#8b5cf6;--secondary-bg:#8b5cf61a;--secondary-border:#8b5cf633;--on-primary:#fff;--on-secondary:#fff;--status-ongoing:#db2777;--status-pending:#059669;--error:#e11d48;--on-surface:#1f2937;--on-surface-variant:#4b5563;--outline-subtle:#e5e7eb}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--on-surface);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif}.app{flex-direction:column;max-width:1720px;min-height:100vh;margin:0 auto;padding:24px;transition:background 1.5s;display:flex}.app:before{content:"";z-index:-1;background:inherit;position:fixed;inset:0}.glass-panel{-webkit-backdrop-filter:blur(16px);background:#ffffff8c;border:1px solid #fff6;box-shadow:0 8px 32px #db27770d}.main-grid{flex:1;grid-template-columns:8fr 4fr;align-items:start;gap:24px;display:grid}@media (width<=1100px){.main-grid{grid-template-columns:1fr;height:auto;overflow:visible}.app{padding:16px;overflow:visible}}@media (width<=1200px){.all-bookings-modal{width:96vw;max-width:96vw}.all-bookings-table-wrap{overflow-x:hidden}.all-bookings-table thead{display:none}.all-bookings-table tbody tr{border-bottom:1px solid #0000000f;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 68px 10px 10px;display:flex;position:relative}.all-bookings-table tbody tr:hover{background:#ffffff80}.all-bookings-table tbody td{border:none;padding:0}.all-bookings-table .col-date{white-space:nowrap;color:var(--primary);font-weight:600}.all-bookings-table .col-room{white-space:nowrap}.all-bookings-table .col-time{white-space:nowrap;color:var(--primary);font-weight:600}.all-bookings-table .col-support{white-space:nowrap}.all-bookings-table .col-booker{white-space:nowrap;color:var(--on-surface-variant)}.all-bookings-table .col-title{white-space:normal;text-overflow:clip;color:var(--on-surface);flex:100%;font-size:13px;font-weight:500;overflow:visible}}.all-bookings-modal{flex-direction:column;width:95vw;max-width:1100px;max-height:84vh;padding:24px;display:flex}.all-bookings-modal h3{flex-shrink:0}.all-bookings-table-wrap{border-radius:10px;flex:1;max-height:66vh;overflow-y:auto}.all-bookings-table{border-collapse:collapse;width:100%;font-size:13px}.all-bookings-cards{flex-direction:column;flex:1;gap:8px;max-height:66vh;padding-right:4px;display:flex;overflow-y:auto}.all-bookings-card{background:#ffffff8c;border:1px solid #0000000f;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.all-bookings-card:hover{background:#ffffffbf}.all-bookings-card .abc-row{color:var(--on-surface);flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:13px;display:flex}.all-bookings-card .abc-row .col-date{color:var(--primary);font-weight:600}.all-bookings-card .abc-row .col-room{font-weight:500}.all-bookings-card .abc-row .col-time{color:var(--primary);font-weight:600}.all-bookings-card .abc-row .col-support{white-space:nowrap}.all-bookings-card .abc-row .row-support-yes{color:#047857;background:#10b9811f;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.all-bookings-card .abc-row .row-support-no{color:#888;background:#0000000a;border-radius:999px;padding:2px 8px;font-size:11px;display:inline-block}.all-bookings-card .abc-row .col-booker{color:var(--on-surface-variant)}.all-bookings-card .abc-title{color:var(--on-surface);word-break:break-all;font-size:13px;font-weight:500}.all-bookings-table thead th{z-index:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-align:left;color:var(--on-surface-variant);white-space:nowrap;letter-spacing:.02em;background:#ffffffeb;border-bottom:1px solid #00000014;padding:10px;font-size:12px;font-weight:600;position:sticky;top:0}.all-bookings-table tbody td{color:var(--on-surface);vertical-align:middle;border-bottom:1px solid #0000000d;padding:10px;line-height:1.4}.all-bookings-table tbody tr:hover td{background:#ffffff80}.all-bookings-table .col-date{white-space:nowrap;color:var(--primary);width:64px;font-weight:600}.all-bookings-table .col-period{width:64px}.all-bookings-table .col-room{white-space:nowrap;font-weight:500}.all-bookings-table .col-time{white-space:nowrap;color:var(--primary);font-weight:600}.all-bookings-table .col-support{white-space:nowrap;text-align:center;width:96px}.all-bookings-table .row-support-yes{color:#047857;background:#10b9811f;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.all-bookings-table .row-support-no{color:#888;background:#0000000a;border-radius:999px;padding:2px 10px;font-size:12px;display:inline-block}.all-bookings-table .col-booker{white-space:nowrap}.all-bookings-table .col-title{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}@media (width<=640px) and (orientation:portrait){.app{height:auto;min-height:100vh;padding:8px;overflow:hidden auto}.main-grid{gap:10px;width:100%;height:auto}body{overflow-x:hidden}.calendar-panel{border-radius:14px;padding:10px;overflow-x:hidden}.calendar-top{flex-direction:column;align-items:stretch;gap:8px}.calendar-nav{justify-content:space-between}.calendar-nav h2{white-space:nowrap;font-size:17px}.nav-btn{width:30px;height:30px;font-size:15px}.calendar-actions{flex-wrap:wrap;justify-content:space-between;gap:6px}.header-stats{flex-shrink:0;padding:4px 8px;font-size:11px}.header-stats-icon{font-size:12px}.header-stats-num{font-size:14px}.header-stats-label,.header-stats-unit{font-size:10px}.btn-ghost{flex-shrink:0;padding:6px 10px;font-size:11px}.btn-primary{flex-shrink:0;gap:4px;padding:6px 12px;font-size:11px}.btn-primary svg{width:14px;height:14px}.calendar-grid,.weekday-header{gap:2px;width:100%}.weekday-header span{background:0 0;border:none;border-radius:4px;padding:4px 0;font-size:10px}.day-cell{aspect-ratio:1/.72;border-radius:6px}.day-cell .day-num{font-size:14px}.day-cell.today .day-num{font-size:17px}.day-cell .day-lunar{margin-top:0;font-size:7px}.day-cell .day-lunar.festival{font-size:8px}.day-cell .day-dots{gap:2px;bottom:3px}.day-cell .day-dot{width:3px;height:3px}.schedule-panel{border-radius:14px;min-height:auto;padding:14px;height:auto!important;display:block!important;overflow:visible!important}.schedule-header{margin-bottom:12px}.schedule-header h2{font-size:17px}.schedule-header p{font-size:12px}.header-btns{flex-shrink:0;gap:6px}.flip-btn,.fab-btn{border-radius:10px;width:38px;height:38px;font-size:18px}.flip-btn svg,.fab-btn svg{width:16px;height:16px}.schedule-list{flex:none;height:auto;padding-right:4px;overflow-y:visible}.schedule-empty{padding:30px 0}.timeline-card{border-radius:10px;margin-bottom:8px;padding:10px 12px 30px;font-size:13px}.card-top{gap:6px;font-size:12px}.card-info{font-size:11px}.card-action-btn{padding:4px 10px;font-size:11px}.flip-container{perspective:none!important}.flip-inner{transform-style:flat!important;height:auto!important;transition:none!important;position:static!important}.flip-inner.flipped{transform:none!important}.flip-front,.flip-back{backface-visibility:visible!important;position:static!important;inset:auto!important;transform:none!important}.flip-front{flex-direction:column;display:flex!important}.flip-back{flex-direction:column;display:none!important}.flip-inner.flipped .flip-front{display:none!important}.flip-inner.flipped .flip-back{display:flex!important}.modal{border-radius:16px;padding:16px;width:94%!important}.modal h3{margin-bottom:12px;font-size:17px}.all-bookings-table{font-size:11px}.all-bookings-table .row-support-yes,.all-bookings-table .row-support-no{padding:2px 6px;font-size:10px}.all-bookings-table .col-title{font-size:12px}.form-group{margin-bottom:12px}.form-group label{font-size:11px}.form-group input:not([type=checkbox]),.form-group select,.form-group textarea{border-radius:8px;padding:8px 12px;font-size:14px}.form-actions{flex-direction:row;gap:8px}.period-toggle button{height:32px;font-size:13px}.toast{border-radius:8px;padding:8px 18px;font-size:12px;top:8px}.left-column{gap:8px}.calendar-footer{margin-top:24px;padding:10px 16px}.cf-center{flex-direction:column;gap:8px}.cf-text{gap:2px}.cf-desc{max-width:100%;margin:0 auto}.cf-icp{justify-content:center}.cf-qr img{width:72px;height:72px;margin:0 auto}.share-modal{border-radius:14px;max-width:100%}.share-modal-header{padding:12px 16px;font-size:15px}.share-modal-body,.share-modal-actions{padding:12px 16px}.share-btn{padding:10px 0;font-size:13px}}.calendar-panel{border-radius:20px;flex-direction:column;flex:1;padding:28px;display:flex}.calendar-top{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.left-column{flex-direction:column;gap:12px;min-height:0;display:flex}.calendar-nav{align-items:center;gap:16px;display:flex}.calendar-nav h2{letter-spacing:-.02em;color:var(--on-surface);white-space:nowrap;font-size:26px;font-weight:700}.nav-btn{width:40px;height:40px;color:var(--on-surface-variant);cursor:pointer;background:#ffffff4d;border:1px solid #ffffff80;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;transition:all .2s;display:flex}.nav-btn:hover{background:#fff9}.calendar-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.all-bookings-entry{cursor:pointer;color:var(--on-surface);white-space:nowrap;background:#ffffff73;border:1px solid #ffffff80;border-radius:10px;align-items:center;gap:6px;padding:6px 14px;font-family:inherit;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.all-bookings-entry:hover{background:#ffffffbf;transform:translateY(-1px)}.all-bookings-entry .ab-count{color:#fff;background:var(--primary);text-align:center;border-radius:999px;min-width:18px;padding:1px 8px;font-size:12px;font-weight:700}.header-stats{cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#fff6;border-radius:10px;align-items:center;gap:6px;padding:6px 14px;transition:all .2s;display:flex}.header-stats:hover{background:#ffffffb3}.header-stats-icon{font-size:14px}.header-stats-label{color:var(--primary);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.header-stats-num{color:var(--on-surface);font-size:18px;font-weight:700}.header-stats-unit{color:var(--on-surface-variant);font-size:11px}.stats-mode-hint{color:#bbb;font-size:11px;font-weight:400}.btn-ghost{color:var(--on-surface);cursor:pointer;background:#ffffff4d;border:1px solid #fff9;border-radius:12px;padding:10px 24px;font-family:inherit;font-size:14px;font-weight:500;transition:all .2s}.btn-ghost:hover{background:#fff9}.btn-ghost:active{background:#fffc;transform:scale(.95)}.btn-primary{background:var(--primary);color:var(--on-primary);cursor:pointer;border:none;border-radius:12px;align-items:center;gap:8px;padding:10px 24px;font-family:inherit;font-size:14px;font-weight:500;transition:all .15s;display:flex;box-shadow:0 4px 16px #db277733}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 8px 24px #db27774d}.btn-primary:active{transform:scale(.95);box-shadow:0 2px 8px #db277726}.weekday-header{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;display:grid}.weekday-header span{text-align:center;color:var(--on-surface-variant);background:#ffffffb3;border:1px solid #fffc;border-radius:8px;padding:10px 0;font-size:13px;font-weight:600}.weekday-header span:last-child{color:var(--primary)}.calendar-grid{border-radius:0 0 12px 12px;grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-cell{aspect-ratio:1/.68;cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffff59;border:1px solid #fff9;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;transition:background .2s,box-shadow .2s,transform .15s,border-color .2s;display:flex;position:relative}.day-cell:active:not(.other-month){transform:scale(.94)}.day-cell:hover:not(.other-month){border-color:var(--primary);background:#ffffffa6}.day-cell.other-month{opacity:.2;cursor:default}.day-cell.other-month:hover{background:#ffffff59;border-color:#fff9}.day-cell.today{background:var(--primary);color:var(--on-primary);border-color:var(--primary);z-index:2;font-weight:700;box-shadow:0 4px 16px #db27774d}.day-cell.today:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.day-cell.selected{border-color:var(--primary);border-width:2px;box-shadow:0 0 0 2px #db277733}.day-cell.today.selected{border-width:2px;border-color:#fff9;box-shadow:0 0 0 2px #fff6,0 4px 16px #db277766}.day-cell .day-num{color:var(--on-surface);font-size:22px;font-weight:600}.day-cell.today .day-num{color:#fff;font-size:26px}.day-cell .day-lunar{color:#666;text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:1px;font-size:11px;line-height:1.2;overflow:hidden}.day-cell .day-lunar.festival{color:#dc2626;font-size:12px;font-weight:600}.day-cell.today .day-lunar{color:#ffffffbf}.day-cell.today .day-lunar.festival{color:#fde68a}.day-cell .day-dots{gap:4px;display:flex;position:absolute;bottom:6px}.day-cell .day-dot{border-radius:50%;width:5px;height:5px}.day-cell .day-dot.morning{background:var(--primary)}.day-cell .day-dot.afternoon{background:var(--secondary)}.day-cell.today .day-dot{background:#fff}.day-tooltip{z-index:999;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;background:#fffffffa;border:1px solid #00000014;border-radius:12px;width:max-content;min-width:180px;padding:10px 14px;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0000001f}.day-tooltip.tip-left{left:0;transform:none}.day-tooltip.tip-right{left:auto;right:0;transform:none}@keyframes tipIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes tipInCenter{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.day-tooltip.tip-center{animation:.15s tipInCenter}.day-tooltip.tip-left,.day-tooltip.tip-right{animation:.15s tipIn}.tip-date{color:var(--on-surface-variant);border-bottom:1px solid #eee;margin-bottom:6px;padding-bottom:6px;font-size:12px;font-weight:600}.tip-item{white-space:nowrap;align-items:center;gap:8px;padding:3px 0;font-size:12px;display:flex}.tip-item+.tip-item{border-top:1px solid #f5f5f5}.tip-period{white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.tip-period.morning{background:var(--primary-bg);color:var(--primary)}.tip-period.afternoon{background:var(--secondary-bg);color:var(--secondary)}.tip-period.fullday{color:var(--primary);background:#db277726}.tip-period.custom{color:var(--secondary);background:#8b5cf61a}.tip-room{color:var(--on-surface);font-weight:600}.tip-booker{color:var(--on-surface-variant);margin-left:auto}.stats-bar{border-radius:16px;flex-shrink:0;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 24px;display:flex}.stats-bar-left{align-items:center;gap:16px;display:flex}.stats-icon{background:var(--primary-bg);border:1px solid var(--primary-border);border-radius:10px;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;display:flex}.stats-text h3{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;font-size:12px;font-weight:600}.stats-text p{color:var(--on-surface);font-size:16px;font-weight:700}.stats-bar-right{align-items:flex-end;gap:1px;height:36px;display:flex}.stats-mini-bar{border-radius:3px;width:6px;transition:height .3s}.stats-year-link{color:#bbb;cursor:pointer;margin-left:16px;font-size:11px}.stats-year-link:hover{color:var(--primary)}.calendar-footer{background:0 0;flex-shrink:0;justify-content:center;align-items:center;padding:4px 28px 10px;display:flex}.cf-center{align-items:center;gap:16px;display:flex}.cf-text{text-align:center;flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.cf-desc{color:var(--on-surface-variant);font-size:13px;line-height:1.6}.cf-icp{color:var(--on-surface-variant);align-items:center;gap:5px;font-size:12px;text-decoration:none;transition:color .2s;display:inline-flex}.cf-shield{color:#059669;flex-shrink:0;width:14px;height:14px;transition:color .2s}.cf-icp-sep{color:var(--outline-subtle);font-weight:400}.cf-icp-ok{color:#059669}.cf-icp:hover{color:var(--primary);text-decoration:underline}.cf-icp:hover .cf-shield,.cf-icp:hover .cf-icp-ok{color:var(--primary)}.cf-qr{text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.cf-qr img{background:#fff;border-radius:8px;width:84px;height:84px;padding:2px}.cf-qr p{color:var(--on-surface-variant);font-size:10px}.flip-container{perspective:1200px}.flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s;position:relative}.flip-inner.flipped{transform:rotateY(180deg)}.flip-front,.flip-back{backface-visibility:hidden;flex-direction:column;display:flex;position:absolute;inset:0}.flip-back{transform:rotateY(180deg)}.schedule-panel{border-radius:20px;flex-direction:column;min-height:100%;padding:28px;display:flex}.schedule-header{flex-shrink:0;justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.header-btns{flex-shrink:0;align-items:center;gap:10px;display:flex}.schedule-header h2{color:var(--on-surface);margin-bottom:6px;font-size:22px;font-weight:700}.schedule-header p{color:var(--on-surface-variant);align-items:center;gap:6px;font-size:13px;display:flex}.schedule-header p .dot{background:var(--primary);border-radius:50%;width:6px;height:6px}.flip-btn{width:48px;height:48px;color:var(--primary);cursor:pointer;background:#ffffff59;border:1px solid #db277726;border-radius:14px;justify-content:center;align-items:center;font-size:20px;transition:all .2s;display:flex}.flip-btn:hover{background:#fff9;border-color:#db277759}.flip-btn:active{background:#fffc;transform:scale(.95)}.fab-btn{background:var(--secondary);width:48px;height:48px;color:var(--on-secondary);cursor:pointer;border:none;border-radius:14px;justify-content:center;align-items:center;font-size:24px;transition:all .2s;display:flex;box-shadow:0 4px 20px #8b5cf64d}.fab-btn:hover{transform:scale(1.05)}.fab-btn:active{transform:scale(.95)}.fab-btn.visit-fab{background:#059669;box-shadow:0 4px 20px #0596694d}.visit-dot{background:#059669!important}.visit-type-badge{white-space:nowrap;border-radius:6px;padding:3px 10px;font-size:13px;font-weight:600}.schedule-list{padding-bottom:8px;padding-right:8px}.schedule-list::-webkit-scrollbar{width:4px}.schedule-list::-webkit-scrollbar-thumb{background:#db27771a;border-radius:10px}.schedule-empty{text-align:center;color:#bbb;padding:60px 0;font-size:14px}.timeline-card{-webkit-backdrop-filter:blur(8px);cursor:pointer;background:#fff6;border:1px solid #ffffff4d;border-radius:12px;margin-bottom:6px;padding:12px 14px 18px;transition:all .2s;position:relative}.timeline-card:hover{background:#fff9;box-shadow:0 4px 16px #0000000d}.timeline-card .card-date{color:var(--primary);font-size:14px;font-weight:600}.timeline-card .card-top{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.timeline-card .card-room{color:var(--on-surface);font-size:20px;font-weight:700;line-height:1.2}.timeline-card .card-range{color:var(--primary);font-size:12px;font-weight:400}.timeline-card .card-time{color:var(--primary);white-space:nowrap;font-size:12px;font-weight:600}.timeline-card .card-range-line{color:var(--primary);margin-bottom:4px;font-size:12px}.timeline-card .card-info span{color:var(--on-surface-variant);font-size:13px}.card-notes-line{color:var(--primary)!important}.status-badge{white-space:nowrap;border-radius:8px;align-items:center;padding:6px 12px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.status-badge.ongoing{background:var(--primary-bg);color:var(--primary);border:1px solid var(--primary-border)}.status-badge.pending{background:var(--secondary-bg);color:var(--secondary);border:1px solid var(--secondary-border)}.status-badge.fullday{color:var(--primary);border:1px solid var(--primary-border);background:#db277726;font-weight:700}.status-badge.custom{color:var(--secondary);border:1px solid var(--secondary-border);background:#8b5cf61f}.timeline-card .card-info{flex-wrap:wrap;gap:6px 16px;display:flex}.timeline-card .card-actions{opacity:0;gap:4px;transition:opacity .2s;display:flex;position:absolute;bottom:12px;right:12px}.timeline-card:hover .card-actions{opacity:1}.card-action-btn{cursor:pointer;color:var(--on-surface);background:#ffffffb3;border:1px solid #00000014;border-radius:6px;padding:5px 12px;font-family:inherit;font-size:12px;transition:all .2s}.card-action-btn:hover{background:#fff}.card-action-btn.danger{color:var(--error)}.card-action-btn.danger:hover{border-color:var(--error);background:#fef2f2}.modal-overlay{z-index:1000;background:#00000014;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff5;border:1px solid #ffffff80;border-radius:20px;width:440px;max-width:90vw;max-height:90vh;padding:32px;overflow-y:auto;box-shadow:0 20px 60px #0000001f}.modal h3{color:var(--on-surface);margin-bottom:24px;font-size:20px;font-weight:700}.form-group{margin-bottom:18px}.form-group label{color:var(--on-surface-variant);letter-spacing:.03em;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.form-group label .optional{color:#bbb;font-weight:400}.form-group label .req{color:#e11d48;margin-left:2px;font-weight:700}.form-group input:not([type=checkbox]),.form-group select,.form-group textarea{width:100%;color:var(--on-surface);background:#fff9;border:1px solid #d1d5db;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:14px;transition:all .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #db277714}.form-group input[type=date]{cursor:pointer}.form-group input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;padding:4px}input[type=time].time-input-clickable{cursor:pointer;min-width:130px}input[type=time].time-input-clickable::-webkit-calendar-picker-indicator{cursor:pointer;padding:4px}.time-range{align-items:center;gap:16px;margin-top:8px;display:flex}.time-range .time-input-clickable{border:1px solid var(--border,#e0e0e0);min-width:130px;height:40px;color:var(--on-surface,#1a1a1a);cursor:pointer;font-variant-numeric:tabular-nums;letter-spacing:.5px;background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 12px;font-size:14px;display:inline-flex}.time-range .time-sep{color:#999;text-align:center;min-width:12px;font-size:14px}.time-range .time-input-clickable:hover{border-color:var(--primary,#e11d48)}.time-range .time-input-clickable.active{border-color:var(--primary,#e11d48);box-shadow:0 0 0 2px #e11d4826}.time-picker-popup{z-index:1000;border:1px solid var(--border,#e0e0e0);-webkit-user-select:none;user-select:none;background:#fff;border-radius:8px;width:200px;margin-top:6px;padding:8px 10px;position:absolute;box-shadow:0 6px 18px #0000001a}.time-picker-display{text-align:center;color:var(--primary,#e11d48);font-variant-numeric:tabular-nums;letter-spacing:1px;margin-bottom:4px;font-size:18px;font-weight:600;line-height:1.2}.time-picker-display .time-picker-colon{opacity:.6;margin:0 2px}.time-picker-cols{gap:6px;display:flex}.time-col{flex:1}.time-col-title{text-align:center;color:var(--text-secondary,#777);margin-bottom:3px;font-size:11px;font-weight:500}.time-col-list{border:1px solid #f0f0f0;border-radius:5px;max-height:132px;padding:2px;overflow-y:auto}.time-col-list::-webkit-scrollbar{width:4px}.time-col-list::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.time-cell{cursor:pointer;width:100%;color:var(--on-surface,#1a1a1a);font-variant-numeric:tabular-nums;text-align:center;background:0 0;border:0;border-radius:3px;padding:3px 0;font-size:12px;line-height:1.3;display:block}.time-cell:hover{color:var(--primary,#e11d48);background:#fef2f4}.time-cell.active{background:var(--primary,#e11d48);color:#fff;font-weight:600}.time-cell.disabled{color:#c2c2c2;cursor:not-allowed;background:0 0}.time-cell.disabled:hover{background:0 0}.form-error{color:#e11d48;margin-top:6px;font-size:12px;line-height:1.5}.time-picker-footer{justify-content:flex-end;gap:6px;margin-top:6px;display:flex}.time-picker-footer .btn-cancel,.time-picker-footer .btn-primary{cursor:pointer;border:0;border-radius:5px;padding:4px 10px;font-size:12px}.time-picker-footer .btn-cancel{color:#333;background:#f5f5f5}.time-picker-footer .btn-primary{background:var(--primary,#e11d48);color:#fff}.form-group input[type=time]{cursor:pointer;flex:1;min-width:0}.time-range .time-sep{color:var(--on-surface-variant);font-weight:600}.form-group textarea{resize:vertical;min-height:60px}.checkbox-label{cursor:pointer;align-items:center;gap:8px;margin-bottom:0!important;font-size:14px!important;font-weight:500!important;display:flex!important}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}.period-toggle{border:1px solid #d1d5db;border-radius:10px;display:flex;overflow:hidden}.period-toggle button{cursor:pointer;color:var(--on-surface-variant);background:0 0;border:none;flex:1;padding:10px 0;font-family:inherit;font-size:14px;font-weight:500;transition:all .2s}.period-toggle button.active{background:var(--primary);color:var(--on-primary)}.period-toggle button:not(.active):hover{background:var(--primary-bg)}.room-chips{flex-wrap:wrap;gap:8px;display:flex}.room-chip{cursor:pointer;color:var(--on-surface-variant);background:#fff6;border:1px solid #d1d5db;border-radius:8px;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:all .2s}.room-chip.active{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.room-chip:not(.active):hover{background:var(--primary-bg)}.support-toggle{gap:10px;display:flex}.support-option{cursor:pointer;color:var(--on-surface-variant);background:#fff6;border:1px solid #d1d5db;border-radius:10px;align-items:center;gap:6px;padding:9px 18px;font-family:inherit;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.support-option:hover{background:var(--primary-bg)}.support-option.active{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.support-option .box{font-size:16px;line-height:1}.form-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.btn-cancel{color:var(--on-surface);cursor:pointer;background:#ffffff80;border:1px solid #d1d5db;border-radius:12px;padding:10px 24px;font-family:inherit;font-size:14px;font-weight:500}.share-preview::-webkit-scrollbar{width:4px}.share-preview::-webkit-scrollbar-thumb{background:#db27771a;border-radius:10px}.share-day-card{background:#fff;border:1px solid #e8e8ec;border-radius:14px;margin-bottom:14px;padding:20px 24px}.share-date-label{color:#111;text-align:center;border-bottom:1px dashed #d0d0d0;margin-bottom:10px;padding-bottom:8px;font-size:17px;font-weight:700}.share-item{padding:10px 0;font-size:14px}.share-item+.share-item{border-top:1px solid #e8e8e8}.share-item-top{align-items:center;gap:10px;margin-bottom:4px;display:flex}.share-item .si-period{border-radius:6px;padding:3px 10px;font-size:12px;font-weight:700}.share-item .si-period.morning{background:var(--primary-bg);color:var(--primary)}.share-item .si-period.afternoon{background:var(--secondary-bg);color:var(--secondary)}.share-item .si-period.fullday{color:var(--primary);background:#db277726}.share-item .si-room{color:#111;font-size:16px;font-weight:700}.share-item-detail{gap:14px;padding-left:2px;font-size:13px;font-weight:400;display:flex}.si-booker,.si-title{color:#222}.si-notes{color:#db2777}.stats-container{padding:8px 0}.stats-year-row{justify-content:center;align-items:center;gap:16px;margin-bottom:24px;display:flex}.stats-year-row span{font-size:20px;font-weight:700}.stats-bars{align-items:flex-end;gap:6px;height:160px;padding:0 4px;display:flex}.stats-bar-wrap{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.stats-bar-val{color:var(--on-surface);margin-bottom:2px;font-size:11px;font-weight:600}.stats-bar-col{background:var(--primary);border-radius:4px 4px 0 0;width:100%;max-width:32px;min-height:2px}.stats-bar-lbl{color:var(--on-surface-variant);margin-top:6px;font-size:10px}.stats-total-line{text-align:center;border-top:1px solid #e5e7eb;margin-top:20px;padding-top:16px;font-size:16px;font-weight:700}.share-template{background:#f5f6fa;width:600px;padding:32px;font-family:Inter,sans-serif;position:fixed;top:0;left:-9999px}.share-template .share-title{text-align:center;color:#111;margin-bottom:6px;font-size:26px;font-weight:700}.share-template .share-subtitle{text-align:center;color:#555;margin-bottom:24px;font-size:15px}.share-modal-overlay{z-index:1500;background:#00000073;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.share-modal{background:#fff;border-radius:20px;flex-direction:column;width:90vw;max-width:640px;max-height:90vh;animation:.25s scaleIn;display:flex;box-shadow:0 20px 60px #0003}.share-modal-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:18px 24px;font-size:17px;font-weight:700;display:flex}.share-close-btn{cursor:pointer;color:#666;background:#f3f4f6;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;transition:background .15s;display:flex}.share-close-btn:hover{background:#e5e7eb}.share-modal-body{flex:1;padding:16px 24px;overflow-y:auto}.share-loading,.share-error{text-align:center;color:#999;padding:48px 0;font-size:15px}.share-preview-img{border-radius:12px;width:100%;display:block}.share-modal-actions{border-top:1px solid #eee;gap:12px;padding:16px 24px;display:flex}.share-btn{cursor:pointer;border:none;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:6px;padding:12px 0;font-size:15px;font-weight:600;transition:all .15s;display:flex}.share-btn-copy{color:#fff;background:#2563eb}.share-btn-copy:hover{background:#1d4ed8}.share-btn-download{color:#374151;background:#f3f4f6}.share-btn-download:hover{background:#e5e7eb}.toast{color:#fff;z-index:2000;background:#1f2937;border-radius:12px;padding:12px 28px;font-size:14px;font-weight:500;animation:.3s toastIn;position:fixed;top:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #00000026}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(-12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}
