@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-latin-ext-400-normal.woff2") format("woff2"),url("../fonts/inter-latin-400-normal.woff2") format("woff2")}@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-latin-ext-500-normal.woff2") format("woff2"),url("../fonts/inter-latin-500-normal.woff2") format("woff2")}@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/inter-latin-ext-600-normal.woff2") format("woff2"),url("../fonts/inter-latin-600-normal.woff2") format("woff2")}@font-face{font-family:"Playfair Display";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/playfair-display-latin-ext-400-normal.woff2") format("woff2"),url("../fonts/playfair-display-latin-400-normal.woff2") format("woff2")}@font-face{font-family:"Playfair Display";font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/playfair-display-latin-ext-400-italic.woff2") format("woff2"),url("../fonts/playfair-display-latin-400-italic.woff2") format("woff2")}@font-face{font-family:"Playfair Display";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/playfair-display-latin-ext-600-normal.woff2") format("woff2"),url("../fonts/playfair-display-latin-600-normal.woff2") format("woff2")}:root{--font-sans: "Inter", system-ui, sans-serif;--font-serif: "Playfair Display", Georgia, serif;--panel-width: 480px;--panel-gutter: 3rem;--hour-col: 52px;--green: linear-gradient(135deg, rgba(30, 120, 60, 0.25) 0%, rgba(40, 160, 80, 0.15) 100%);--green-border: 1px solid rgba(50, 180, 90, 0.18);--green-shadow: 0 2px 12px rgba(30, 160, 80, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.04);--green-text: rgba(140, 255, 180, 0.9);--red: linear-gradient(135deg, rgba(180, 30, 30, 0.35) 0%, rgba(220, 50, 50, 0.25) 100%);--red-border: 1px solid rgba(220, 60, 60, 0.25);--red-shadow: 0 2px 12px rgba(200, 30, 30, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.05);--red-text: rgba(255, 180, 180, 0.95);--gold: linear-gradient(145deg, rgba(255, 168, 28, 0.62) 0%, rgba(255, 122, 18, 0.38) 48%, rgba(176, 72, 8, 0.42) 100%);--gold-border: 1px solid rgba(255, 196, 92, 0.62);--gold-shadow: 0 0 22px rgba(255, 150, 24, 0.38), 0 4px 16px rgba(180, 80, 0, 0.22), inset 0 1px 0 rgba(255, 236, 180, 0.35);--gold-text: #ffe7b0;--purple: linear-gradient(145deg, rgba(176, 72, 255, 0.58) 0%, rgba(98, 24, 196, 0.4) 48%, rgba(72, 16, 168, 0.48) 100%);--purple-border: 1px solid rgba(214, 168, 255, 0.58);--purple-shadow: 0 0 26px rgba(168, 88, 255, 0.42), 0 4px 16px rgba(88, 20, 160, 0.28), inset 0 1px 0 rgba(236, 214, 255, 0.32);--purple-text: #f0dcff;--gray: linear-gradient(135deg, rgba(60, 60, 60, 0.4) 0%, rgba(40, 40, 40, 0.3) 100%);--gray-border: 1px solid rgba(120, 120, 120, 0.18);--gray-shadow: 0 2px 12px rgba(80, 80, 80, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.04);--gray-text: rgba(160, 160, 160, 0.8)}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;height:100%;background:#050505;color:#f4f4f4;font-family:var(--font-sans);overflow:hidden;user-select:none;-webkit-user-select:none;cursor:default}.fatal{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;font-family:var(--font-serif);text-align:center;padding:2rem}.fatal__detail{color:rgba(255,255,255,.45);font-family:var(--font-sans);font-size:.85rem}.display{position:fixed;inset:0;overflow:hidden}.display__bg{position:absolute;inset:0;background:url("../img/bg.jpg") center/cover no-repeat}.display__dim{position:absolute;inset:0;background:rgba(0,0,0,.6)}.display__columns{position:relative;z-index:2;display:flex;height:100%;align-items:stretch}.calendar{width:var(--panel-width);flex:0 0 var(--panel-width);margin:1rem var(--panel-gutter);height:calc(100% - 2rem);display:flex;flex-direction:column;border-radius:1rem;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.05);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.calendar__header{padding:1rem;border-bottom:1px solid rgba(255,255,255,.08)}.calendar__title{margin:0;font-family:var(--font-serif);font-size:1.35rem;font-weight:600;text-align:center;letter-spacing:.04em}.calendar__date{margin:.35rem 0 0;text-align:center;font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.4)}.calendar__body{flex:1;overflow:hidden;padding:.5rem;position:relative}.calendar__closed{position:absolute;inset:.5rem;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:.85rem;background:radial-gradient(120% 80% at 50% 0%, rgba(80, 80, 80, 0.28), transparent 55%),linear-gradient(165deg, rgba(28, 28, 28, 0.82) 0%, rgba(10, 10, 10, 0.72) 100%);border:1px solid rgba(212,180,120,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 18px 40px rgba(0,0,0,.35);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:closed-in .95s cubic-bezier(0.16, 1, 0.3, 1) both}.calendar__closed-inner{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1.5rem}.calendar__closed-kicker{margin:0;font-size:.72rem;font-weight:500;letter-spacing:.42em;text-transform:uppercase;color:rgba(230,210,160,.7)}.calendar__closed-title{margin:.7rem 0 0;font-family:var(--font-serif);font-size:clamp(3.4rem,5.4vw,5.4rem);font-style:italic;font-weight:400;letter-spacing:.04em;line-height:1;color:rgba(248,242,230,.96);text-shadow:0 0 32px rgba(200,160,80,.22),0 2px 18px rgba(0,0,0,.5)}.calendar__closed-rule{display:block;width:5.5rem;height:1px;margin:1.35rem 0 1.1rem;background:linear-gradient(90deg, transparent, rgba(230, 196, 120, 0.9), transparent);box-shadow:0 0 12px rgba(200,160,80,.35)}.calendar__closed-note{margin:0;font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.42)}@keyframes closed-in{from{opacity:0;transform:scale(0.97);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}.timeline{--hour-count: 19;height:100%;position:relative}.timeline__hours,.timeline__bookings{display:grid;grid-template-rows:repeat(var(--hour-count), minmax(0, 1fr));gap:3px;height:100%}.timeline__bookings{position:absolute;inset:0;pointer-events:none;z-index:5}.calendar:not(.calendar--right) .timeline__bookings{left:var(--hour-col)}.calendar--right .timeline__bookings{right:var(--hour-col)}.timeline__past{position:absolute;top:0;left:0;right:0;background:rgba(0,0,0,.6);pointer-events:none;z-index:10}.timeline__now{position:absolute;left:0;right:0;height:2px;background:#ef4444;box-shadow:0 0 10px rgba(239,68,68,.75),0 0 1px #fff;z-index:20;transform:translateY(-50%);pointer-events:none}.slot{display:flex;align-items:stretch;min-height:0}.slot__hours{width:var(--hour-col);flex-shrink:0;display:flex;flex-direction:column}.slot__hours span{flex:1;display:flex;align-items:center;padding:0 6px;font-size:.75rem;font-weight:500;letter-spacing:.08em;color:rgba(255,255,255,.5)}.slot__hours--right span{justify-content:flex-end}.slot__block{flex:1;display:flex;align-items:center;justify-content:center;border-radius:.5rem;padding:0 .5rem;min-width:0;transition:opacity .9s cubic-bezier(0.22, 1, 0.36, 1),background .45s ease,border-color .45s ease,box-shadow .45s ease,color .45s ease}.slot.is-covered .slot__block{opacity:0}.slot__block span{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.calendar--right .slot__block{margin-right:0;margin-left:4px}.calendar:not(.calendar--right) .slot__block{margin-left:0;margin-right:4px}.slot__block--free{background:var(--green);border:var(--green-border);box-shadow:var(--green-shadow)}.slot__block--free span{color:var(--green-text)}.slot__block--busy{background:var(--red);border:var(--red-border);box-shadow:var(--red-shadow)}.slot__block--busy span{color:var(--red-text)}.slot__block--instructor{position:relative;overflow:hidden;background:var(--gold);border:var(--gold-border);box-shadow:var(--gold-shadow)}.slot__block--instructor::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(255, 236, 180, 0.22) 0%, transparent 42%, rgba(255, 110, 20, 0.14) 100%);pointer-events:none}.slot__block--instructor span{position:relative;color:var(--gold-text);text-shadow:0 0 18px rgba(255,180,40,.55),0 1px 2px rgba(80,30,0,.55)}.slot__block--maintenance{position:relative;overflow:hidden;background:var(--purple);border:var(--purple-border);box-shadow:var(--purple-shadow)}.slot__block--maintenance::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 12% -10%, rgba(226, 186, 255, 0.34), transparent 52%),linear-gradient(180deg, rgba(186, 120, 255, 0.16), transparent 62%);pointer-events:none}.slot__block--maintenance span{position:relative;color:var(--purple-text);text-shadow:0 0 20px rgba(186,120,255,.65),0 1px 2px rgba(40,0,80,.55)}.slot__block--passed{background:var(--gray);border:var(--gray-border);box-shadow:var(--gray-shadow)}.slot__block--passed span{color:var(--gray-text)}.booking{min-height:0}.booking__block{height:100%;position:relative;overflow:hidden;transform-origin:50% 50%;transition:none}.booking:not(.is-enter):not(.is-leave):not(.is-prepare) .booking__block{transition:background .7s ease,border-color .7s ease,box-shadow .7s ease}.booking:not(.is-enter):not(.is-leave):not(.is-prepare) .booking__block span{transition:color .7s ease,text-shadow .7s ease}.booking:not(.is-enter):not(.is-leave):not(.is-prepare) .booking__block::before{transition:opacity .7s ease}.booking.is-passed .booking__block.slot__block--busy,.booking.is-passed .booking__block.slot__block--instructor,.booking.is-passed .booking__block.slot__block--maintenance{background:var(--gray);border:var(--gray-border);box-shadow:var(--gray-shadow)}.booking.is-passed .booking__block::before{opacity:0}.booking.is-passed .booking__block span{color:var(--gray-text);text-shadow:none}.booking.is-prepare .booking__block{opacity:0;transform:scaleY(0.42) scaleX(0.97);clip-path:inset(46% 8% 46% 8% round 0.5rem)}.booking.is-enter .booking__block{animation:booking-reveal 1.15s cubic-bezier(0.16, 1, 0.3, 1) both}.booking.is-leave .booking__block{animation:booking-conceal .85s cubic-bezier(0.55, 0.05, 0.2, 1) both}.booking.is-enter .booking__block span,.booking.is-leave .booking__block span{display:inline-block;max-width:100%}.booking.is-enter .booking__block span{animation:booking-label-in .85s .28s cubic-bezier(0.16, 1, 0.3, 1) both}.booking.is-leave .booking__block span{animation:booking-label-out .4s ease both}.booking.is-enter .booking__block::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg, transparent 25%, rgba(255, 255, 255, 0.28) 50%, transparent 75%);animation:booking-sheen 1.05s .2s ease-out both;pointer-events:none}@keyframes booking-reveal{0%{opacity:0;transform:scaleY(0.42) scaleX(0.97);clip-path:inset(46% 8% 46% 8% round 0.5rem);filter:brightness(1.55) saturate(1.15);box-shadow:0 0 0 rgba(220,50,50,0)}58%{opacity:1;filter:brightness(1.08)}100%{opacity:1;transform:scaleY(1) scaleX(1);clip-path:inset(0 0 0 0 round 0.5rem);filter:none}}@keyframes booking-conceal{0%{opacity:1;transform:scaleY(1) scaleX(1);clip-path:inset(0 0 0 0 round 0.5rem);filter:none}100%{opacity:0;transform:scaleY(0.4) scaleX(0.97);clip-path:inset(46% 10% 46% 10% round 0.5rem);filter:brightness(1.35)}}@keyframes booking-label-in{from{opacity:0;transform:translateY(8px);letter-spacing:.28em;filter:blur(6px)}to{opacity:1;transform:none;letter-spacing:.08em;filter:none}}@keyframes booking-label-out{to{opacity:0;transform:translateY(-6px);letter-spacing:.22em;filter:blur(4px)}}@keyframes booking-sheen{from{transform:translateX(-80%);opacity:.9}to{transform:translateX(80%);opacity:0}}.brand{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;text-align:center}.brand__logo{width:12rem;height:12rem;object-fit:contain;filter:drop-shadow(0 16px 24px rgba(0, 0, 0, 0.55));margin-bottom:2rem}.brand__time{margin:0;font-family:var(--font-serif);font-size:3rem;font-weight:400;letter-spacing:.12em}.brand__date{margin:.5rem 0 0;font-size:.875rem;letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.4)}.brand__qr{margin-top:4rem;display:flex;flex-direction:column;align-items:center;gap:1rem}.brand__qr-frame{padding:1rem;border-radius:1rem;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);box-shadow:0 8px 32px rgba(0,0,0,.3);backdrop-filter:blur(10px)}.brand__qr-frame svg{display:block;width:160px;height:160px}.brand__cta{margin:0;font-family:var(--font-serif);font-size:1rem;font-style:italic;letter-spacing:.15em;color:rgba(230,210,160,.9);text-shadow:0 0 30px rgba(200,160,60,.8),0 0 60px rgba(200,160,60,.4),0 2px 4px rgba(0,0,0,.6)}@media(max-width: 1400px){:root{--panel-width: 380px;--panel-gutter: 1.5rem}.brand__logo{width:9rem;height:9rem;margin-bottom:1.25rem}.brand__time{font-size:2.4rem}.brand__qr{margin-top:2rem}}@media(max-width: 1100px){.display__columns{flex-direction:column;overflow:auto}.calendar{width:auto;flex:1 1 auto;height:auto;min-height:50vh;margin:.75rem}.brand{order:-1;height:auto;padding:1.5rem 1rem}.brand__qr{margin-top:1.5rem}}
