:root{--paper:#f7f3ea;--paper-deep:#eee8dc;--ink:#172033;--muted:#69707b;--coral:#e76f61;--coral-dark:#c9574b;--sage:#4e7a64;--line:#ded8cc;--white:#fffdf8;--shadow:0 24px 70px #1720331a}*{box-sizing:border-box}html,body{min-height:100%}html{background:var(--paper)}body{color:var(--ink);background:radial-gradient(circle at 10% 8%, #e76f6114, transparent 24rem), var(--paper);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2{letter-spacing:-.045em;line-height:1.04}:focus-visible{outline-offset:3px;outline:3px solid #e76f6173}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--muted)}.eyebrow{color:var(--coral-dark);letter-spacing:.13em;text-transform:uppercase;margin-bottom:10px;font-size:.73rem;font-weight:800}.panel{box-shadow:var(--shadow);background:#fffdf8eb;border:1px solid #ded8cce6;border-radius:20px}.brand{letter-spacing:-.02em;align-items:center;gap:11px;font-weight:750;display:inline-flex}.brand-mark{width:58px;height:58px;color:var(--white);background:var(--coral);letter-spacing:-.04em;border-radius:18px;place-items:center;font-size:1rem;font-weight:850;display:inline-grid;transform:rotate(-3deg);box-shadow:0 10px 24px #e76f613d}.brand-mark.small{border-radius:12px;width:38px;height:38px;font-size:.73rem}.button,.icon-button,.text-button,.tool-button{cursor:pointer;border:0;min-height:44px;transition:transform .16s,background .16s,border-color .16s,opacity .16s}.button{border-radius:13px;justify-content:center;align-items:center;gap:10px;padding:0 22px;font-weight:760;display:inline-flex}.button.primary{color:#fff;background:var(--coral);box-shadow:0 10px 22px #e76f613b}.button.primary:hover{background:var(--coral-dark);transform:translateY(-1px)}.button.secondary{border:1px solid var(--line);background:var(--white)}.button.wide{width:100%}.button.large{min-height:54px;padding-inline:26px}.button:disabled{cursor:not-allowed;opacity:.48;transform:none}.text-button{color:var(--muted);background:0 0;padding:0 5px;font-weight:680}.text-button:hover{color:var(--coral-dark)}.center-page{place-items:center;min-height:100vh;padding:32px 20px;display:grid}.login-card{width:min(100%,455px);padding:48px}.login-card .brand-mark{margin-bottom:30px}.login-card h1{margin-bottom:14px;font-size:clamp(2rem,6vw,3.15rem)}.login-card>.muted{margin-bottom:30px;line-height:1.6}.stack{gap:18px;display:grid}.field{color:var(--ink);gap:8px;font-size:.87rem;font-weight:720;display:grid}.field small{color:var(--muted);font-weight:500}.field input,.field select{width:100%;height:50px;color:var(--ink);border:1px solid var(--line);background:var(--white);border-radius:12px;outline:none;padding:0 15px}.field input:focus,.field select:focus{border-color:var(--coral);box-shadow:0 0 0 3px #e76f611f}.form-error{color:#a93f36;margin:0;font-size:.88rem;font-weight:650}.empty-state{text-align:center;max-width:480px;padding:45px}.empty-state .brand-mark{margin-bottom:22px}.empty-state p{color:var(--muted);margin-bottom:25px}.admin-shell{min-height:100vh}.topbar,.public-header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f3ead1;border-bottom:1px solid #ded8cccc;justify-content:space-between;align-items:center;height:76px;padding:0 max(24px,50vw - 580px);display:flex}.topbar{z-index:20;position:sticky;top:0}.admin-content{width:min(1160px,100% - 40px);margin:0 auto;padding:72px 0 100px}.admin-intro{max-width:690px;margin-bottom:34px}.admin-intro h1{margin-bottom:16px;font-size:clamp(2.5rem,6vw,5rem)}.admin-intro>p:last-child{max-width:610px;color:var(--muted);font-size:1.08rem;line-height:1.65}.upload-panel{grid-template-columns:minmax(280px,1.35fr) minmax(240px,.8fr) auto;align-items:end;gap:20px;padding:24px;display:grid}.creation-fields{gap:14px;display:grid}.field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.dropzone{cursor:pointer;text-align:center;background:var(--paper);border:1.5px dashed #c9bfb0;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:7px;min-height:178px;padding:20px;transition:all .16s;display:flex}.dropzone:hover,.dropzone.dragging{border-color:var(--coral);background:#fff5ef;transform:translateY(-1px)}.dropzone strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.dropzone>span:last-of-type{color:var(--muted);font-size:.82rem}.upload-icon{width:38px;height:38px;color:var(--coral-dark);background:#e76f611f;border-radius:50%;place-items:center;font-size:1.3rem;display:grid}.progress-track{background:var(--paper-deep);border-radius:99px;grid-column:2/-1;height:7px;overflow:hidden}.progress-track span{border-radius:inherit;background:var(--coral);height:100%;transition:width .15s;display:block}.upload-panel .form-error{grid-column:2/-1}.created-game{background:#4e7a641a;border-radius:13px;grid-column:2/-1;justify-content:space-between;align-items:center;gap:18px;padding:15px;display:flex}.created-game div{gap:3px;display:grid}.created-game span{color:var(--muted);font-size:.8rem}.library{margin-top:70px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:22px;display:flex}.section-heading h2{margin:0;font-size:2.25rem}.section-heading>span{color:var(--muted);font-size:.9rem}.empty-library{color:var(--muted);text-align:center;box-shadow:none;padding:45px}.empty-library p{margin:0}.puzzle-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.puzzle-card{border:1px solid var(--line);background:var(--white);border-radius:18px;overflow:hidden;box-shadow:0 10px 32px #1720330f}.puzzle-thumb{aspect-ratio:16/9;background:var(--paper-deep);display:block;overflow:hidden}.puzzle-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.puzzle-thumb:hover img{transform:scale(1.02)}.puzzle-card-body{padding:18px}.puzzle-card-body h3{text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px;font-size:1.08rem;overflow:hidden}.puzzle-card-body time{color:var(--muted);font-size:.78rem}.puzzle-meta{color:var(--muted);margin:0 0 3px;font-size:.78rem}.card-actions{flex-wrap:wrap;gap:7px;margin-top:17px;display:flex}.icon-button{border:1px solid var(--line);background:0 0;border-radius:9px;align-items:center;min-height:38px;padding:0 11px;font-size:.78rem;font-weight:700;display:inline-flex}.icon-button:hover{background:var(--paper);border-color:#bbb1a3}.icon-button.danger{color:#a93f36;margin-left:auto}.player-landing{min-height:100vh;padding-bottom:70px}.public-header{border-bottom-color:#0000}.setup-card{grid-template-columns:1.08fr .92fr;width:min(1040px,100% - 40px);margin:55px auto 0;display:grid;overflow:hidden}.setup-photo{background:var(--paper-deep);min-height:580px}.setup-photo img{object-fit:cover;width:100%;height:100%}.setup-options{flex-direction:column;justify-content:center;padding:clamp(32px,5vw,64px);display:flex}.setup-options h1{margin-bottom:30px;font-size:clamp(2.25rem,5vw,4rem)}.setup-options>.button{align-self:flex-start;margin-top:5px}.setup-note{color:var(--muted);margin:13px 0 0;font-size:.76rem}.game-summary{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:28px;display:grid}.game-summary>span{border:1px solid var(--line);border-radius:11px;gap:5px;padding:15px;font-weight:740;display:grid}.game-summary small{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.67rem;font-weight:700}.game-page{background:var(--paper-deep);flex-direction:column;height:100dvh;min-height:520px;display:flex;overflow:hidden}.game-toolbar{z-index:4;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf8f0;grid-template-columns:auto minmax(120px,1fr) auto auto;align-items:center;gap:20px;min-height:72px;padding:9px 18px;display:grid}.tool-button{background:0 0;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 11px;font-size:.84rem;font-weight:720;display:inline-flex}.tool-button:hover{background:var(--paper)}.game-title{gap:2px;min-width:0;display:grid}.game-title strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-title span{color:var(--muted);font-size:.7rem}.game-stats{gap:9px;display:flex}.game-stats>span{background:var(--paper);font-variant-numeric:tabular-nums;border-radius:9px;gap:1px;min-width:72px;padding:6px 10px;font-size:.84rem;font-weight:760;display:grid}.game-stats small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.57rem;font-weight:700}.game-actions{gap:4px;display:flex}.game-board{background:radial-gradient(circle,#f7f3ea 0,#eee8dc 70%);flex:1;min-height:0;position:relative;overflow:hidden}.game-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.game-canvas:active{cursor:grabbing}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#1720336b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.complete-card{background:var(--white);text-align:center;border-radius:22px;width:min(430px,100%);padding:40px;animation:.28s ease-out rise;box-shadow:0 30px 90px #17203347}.complete-photo{aspect-ratio:4/3;border:1px solid var(--line);background:var(--paper-deep);border-radius:18px;width:min(190px,60vw);margin:0 auto 25px;padding:6px;position:relative;transform:rotate(-1.5deg);box-shadow:0 12px 28px #17203324}.complete-photo img{object-fit:contain;border-radius:12px;width:100%;height:100%}.complete-icon{border:4px solid var(--white);color:#fff;background:var(--sage);border-radius:50%;place-items:center;width:43px;height:43px;font-size:1.1rem;display:grid;position:absolute;bottom:-11px;right:-11px;box-shadow:0 7px 16px #17203329}.complete-card h2{margin-bottom:12px;font-size:2.6rem}.complete-card>p:not(.eyebrow){color:var(--muted)}.complete-actions{justify-content:center;gap:9px;margin-top:25px;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(10px)scale(.98)}}@media (max-width:850px){.upload-panel{grid-template-columns:1fr;align-items:stretch}.progress-track,.upload-panel .form-error,.created-game{grid-column:1}.upload-panel .button{justify-self:stretch}.setup-card{grid-template-columns:1fr;margin-top:20px}.setup-photo{aspect-ratio:16/10;min-height:auto}.setup-options{padding:32px}.game-toolbar{grid-template-columns:auto 1fr auto;gap:8px}.game-title{display:none}.game-actions{border-top:1px solid var(--line);order:4;grid-column:1/-1;justify-content:center;padding-top:5px}.game-toolbar{min-height:112px}}@media (max-width:620px){.login-card{padding:32px 24px}.topbar,.public-header{height:66px;padding-inline:18px}.admin-content{width:min(100% - 28px,1160px);padding-top:50px}.upload-panel{padding:14px}.field-row,.puzzle-grid{grid-template-columns:1fr}.library{margin-top:52px}.setup-card{width:min(100% - 24px,1040px)}.setup-options{padding:27px 20px}.setup-options h1{margin-bottom:25px}.setup-options>.button{width:100%}.game-toolbar{padding-inline:8px}.tool-button span{display:none}.preview-button span{display:inline}.game-stats>span{min-width:65px;padding-inline:8px}.complete-card{padding:34px 22px}.complete-actions{flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
