:root{color-scheme:light}*{box-sizing:border-box}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,Apple Color Emoji,Segoe UI Emoji;background:#fafafa;color:#111}a{color:inherit}.container{max-width:1100px;margin:0 auto;padding:24px;-webkit-overflow-scrolling:auto;overflow:visible;touch-action:auto}body,html{height:auto;min-height:100%}body{overflow-y:auto;-webkit-overflow-scrolling:touch}.header{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.h1{font-size:28px;margin:0}.sub{color:#444;margin:0;line-height:1.4}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:16px;gap:16px}.card{background:#fff;border:1px solid #eee;border-radius:16px;overflow:hidden;box-shadow:0 6px 16px rgba(0,0,0,.04);display:flex;flex-direction:column}.card img{width:100%;height:180px;object-fit:contain;background:transparent}.cardBody{padding:14px;display:flex;flex-direction:column;gap:8px;flex:1 1}.title{font-weight:650}.desc{color:#555;font-size:14px;line-height:1.35}.row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}.badge{font-size:12px;padding:6px 10px;border-radius:999px;border:1px solid #ddd;background:#f7f7f7}.badgeAvail{background:#eaf9f0;border-color:#bfe7cf;color:#136f3a;font-weight:600}.badgeReserved{border-color:#f5bcbc;background:#ffe8e8;color:#8a1f1f;font-weight:600}.btnRow{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 12px;border-radius:12px;border:1px solid #ddd;background:#fff;cursor:pointer;font-weight:600;text-decoration:none;font-size:14px;-webkit-appearance:none}.btn,.btn:visited{color:#111}.btnPrimary{border-color:#111;background:#111;color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.small{font-size:12px;color:#666}.modalOverlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:18px}.modal{width:100%;max-width:420px;background:#fff;border-radius:18px;overflow:hidden;border:1px solid #eee;box-shadow:0 16px 42px rgba(0,0,0,.18)}.modalHead{padding:14px 16px;border-bottom:none;font-weight:700}.modalBody{padding:16px;display:flex;flex-direction:column;gap:10px}.input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid #ddd}.input,input,select,textarea{font-size:16px}.error{color:#b00020}.error,.toast{font-size:13px}.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#111;color:#fff;padding:10px 14px;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.25)}.viewerOverlay{position:fixed;inset:0;background:rgba(0,0,0,.9);display:flex;align-items:center;justify-content:center;z-index:1000;touch-action:none}.viewerImg{max-width:100%;max-height:100%;transform-origin:center center;cursor:-webkit-grab;cursor:grab}.viewerToolbar{position:fixed;top:10px;right:10px;display:flex;gap:8px}.viewerBtn{background:hsla(0,0%,100%,.12);color:#fff;border:1px solid hsla(0,0%,100%,.2);border-radius:10px;padding:8px 10px;cursor:pointer}.partyBg{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:linear-gradient(180deg,#fdfcff,#f4faff)}.partyLayer{position:absolute;inset:0}.partyStars{z-index:1}.partyClouds{z-index:2;display:none}.partyBalloons{z-index:3}.partyStars .star{position:absolute;display:block;background:linear-gradient(180deg,#fff9c9,#ffd45d);opacity:.95;box-shadow:0 0 8px 3px rgba(255,240,180,.85),0 0 14px 6px rgba(255,245,210,.45);animation:twinkle 2.4s ease-in-out infinite alternate;-webkit-clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}@keyframes twinkle{0%{opacity:.3;transform:scale(1)}to{opacity:1;transform:scale(1.2)}}.partyClouds .cloud{position:absolute;top:0;width:260px;height:120px;animation:cloud-drift linear infinite}.partyClouds .cloud i{position:absolute;display:block;border-radius:999px;background:radial-gradient(ellipse at 35% 40%,#fff 45%,#eef6ff 75%);border:1px solid rgba(185,205,235,.8);box-shadow:inset 0 0 12px hsla(0,0%,100%,.85);filter:drop-shadow(0 6px 18px rgba(130,160,200,.22))}.partyClouds .cloud i:first-child{left:0;top:46px;width:120px;height:72px}.partyClouds .cloud i:nth-child(2){left:56px;top:16px;width:146px;height:90px}.partyClouds .cloud i:nth-child(3){left:140px;top:48px;width:112px;height:72px}.partyClouds .cloud i:nth-child(4){left:26px;top:58px;width:96px;height:62px}.partyClouds .cloud i:nth-child(5){left:178px;top:58px;width:92px;height:62px}@keyframes cloud-drift{0%{transform:translateX(-30%)}to{transform:translateX(130%)}}@keyframes cloud-drift-rev{0%{transform:translateX(130%)}to{transform:translateX(-30%)}}.partyBalloons span{position:absolute;bottom:-120px;width:60px;height:80px;border-radius:60px 60px 50px 50px;background:radial-gradient(circle at 50% 30%,hsla(0,0%,100%,.8),hsla(0,0%,100%,0) 40%),var(--balloon,#ff9ab5);box-shadow:inset 0 -10px 20px rgba(0,0,0,.08);animation:rise linear infinite}.partyBalloons span:after{content:"";position:absolute;bottom:-14px;left:50%;width:2px;height:26px;background:rgba(0,0,0,.12);transform:translateX(-50%)}.partyBalloons span:before{content:"";position:absolute;bottom:-8px;left:50%;width:8px;height:8px;background:var(--balloon,#ff9ab5);border-radius:2px;transform:translateX(-50%) rotate(45deg)}@keyframes rise{0%{transform:translateY(0)}to{transform:translateY(-120vh)}}.liquid .card{border-radius:22px;background:hsla(0,0%,100%,.55);border:1px solid hsla(0,0%,100%,.45);box-shadow:0 10px 30px rgba(0,20,50,.08),inset 0 1px 0 hsla(0,0%,100%,.6);backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%)}.liquid .cardBody{padding:16px;gap:10px}.liquid .btn{background:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.5);box-shadow:0 2px 10px rgba(0,0,0,.06);transition:transform .15s ease,background .15s ease}.liquid .btn:active{transform:translateY(1px)}.liquid .btnPrimary{background:linear-gradient(180deg,rgba(0,0,0,.92),rgba(0,0,0,.88));border-color:hsla(0,0%,7%,.95)}.liquid .badge{background:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.5)}.liquid .badgeAvail{background:#eaf9f0!important;border-color:#bfe7cf!important;color:#136f3a!important}.liquid .badgeReserved{background:#ffe8e8!important;border-color:#f5bcbc!important;color:#8a1f1f!important}.liquid .input{background:hsla(0,0%,100%,.7);border-color:hsla(0,0%,100%,.55);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.6)}.liquid .modal{background:hsla(0,0%,100%,.6);border:1px solid hsla(0,0%,100%,.5);backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%)}.liquid .modalHead{background:transparent;border-bottom:none}