:root{font-family:Avenir Next,Segoe UI,sans-serif;color:#41343d;background:#eadfd6;--cream:#f8f1e7;--paper:#fffaf3;--pink:#e979a7;--berry:#8f315b;--muted:#796b73;--line:#ddcec4}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(135deg,#e7d9ce,#f2e6df 46%,#dfd0c8)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app-shell{max-width:1180px;margin:auto;min-height:100vh;padding-bottom:100px;background-color:var(--cream);background-image:linear-gradient(rgba(197,162,177,.1) 1px,transparent 1px);background-size:100% 31px;box-shadow:0 0 80px #56394729}.topbar{position:sticky;top:0;z-index:20;background:#f8f1e7eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid #aa8b962b}.topbar-inner{max-width:1080px;margin:auto;padding:13px 16px;display:flex;align-items:center;gap:12px}.brand-sticker{width:48px;height:53px;display:grid;place-items:center;background:var(--pink);color:#fff;border:2px solid var(--berry);border-radius:8px;transform:rotate(-5deg);box-shadow:3px 3px var(--berry);font:800 1rem Georgia}.brand{flex:1}.brand small{display:block;color:var(--berry);font-size:.7rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.brand h1{margin:2px 0 0;font:700 1.38rem Georgia}.icon-button{width:43px;height:43px;display:grid;place-items:center;border:1px solid #decbd2;background:#fffaf3e6;border-radius:50%}.icon-button svg{width:20px}main{max-width:1080px;margin:auto;padding:18px 15px}.cover{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:23px 20px;box-shadow:0 12px 30px #56394724;transform:rotate(-.25deg)}.tape{position:absolute;width:82px;height:25px;background:#ec93b7ad;top:-12px;left:50%;transform:translate(-50%) rotate(-2deg)}.scribble,.section-head span{font-family:Segoe Print,Bradley Hand,cursive;color:var(--berry)}.cover h2{font:700 1.7rem Georgia;margin:4px 0}.cover p{color:var(--muted);margin:0;line-height:1.45}.overview{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:end;margin-top:18px}.overview b{font-size:.84rem}.progress{height:11px;background:#eadeda;border-radius:20px;overflow:hidden;margin-top:7px}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--pink),#d65288);border-radius:20px}.percent{font:700 2.2rem Georgia;color:var(--berry)}.percent small{display:block;font:700 .65rem Segoe UI;text-align:right;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.notes,.filters{display:flex;gap:8px;overflow:auto;scrollbar-width:none}.notes{padding-top:16px}.notes span{flex:0 0 auto;background:#ffe6ef;border:1px solid #e9b2c7;padding:8px 11px;box-shadow:2px 3px #8f315b33;font:700 .76rem Segoe Print}.notes span:nth-child(2){background:#f5e6b8;border-color:#dec988}.notes span:nth-child(3){background:#e7e4ee;border-color:#bbb0c8}.setup-note{margin:15px 2px -3px;padding:10px 12px;border:1px dashed #cf9fb2;background:#fff2f7;color:var(--berry);font-size:.78rem}.tools{margin-top:20px}.search{position:relative;display:block}.search input{width:100%;border:1px solid var(--line);border-radius:17px;background:#fffaf3f5;padding:14px 46px 14px 16px;outline:none}.search svg{position:absolute;right:15px;top:12px;width:21px;color:var(--berry)}.filters{padding:12px 2px 5px}.chip{white-space:nowrap;border:1px solid #ddcbd1;border-radius:999px;background:#fffaf3e6;padding:9px 13px;font-size:.82rem;font-weight:800}.chip.active{background:var(--pink);color:#fff;border-color:var(--berry);box-shadow:2px 3px var(--berry)}.section-head{display:flex;align-items:flex-end;justify-content:space-between;margin:24px 3px 14px}.section-head h2{font:700 1.38rem Georgia;margin:0}.section-head span{font-size:.75rem}.album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 13px}.sticker{border:0;background:none;padding:0;text-align:left;min-width:0;transition:.18s}.sticker:nth-child(4n+1){transform:rotate(-.7deg)}.sticker:nth-child(4n+2){transform:rotate(.6deg)}.sticker-card{position:relative;background:#fffdf9;padding:8px 8px 12px;border:1px solid #d8cbc2;box-shadow:3px 5px #6f515e24,0 8px 19px #472f3a17;border-radius:3px}.slot{aspect-ratio:4/5;display:grid;place-items:center;position:relative;overflow:hidden;background:#f5eee5 radial-gradient(#d7c7c0 1.2px,transparent 1.2px);background-size:13px 13px;border:2px dashed #d5b9c4}.collected .slot{border:0;background:linear-gradient(150deg,#f4dccb,#fff8ee 45%,#eecad8)}.waiting .slot{background:repeating-linear-gradient(-45deg,#fff7f7,#fff7f7 11px,#f9e6ed 11px,#f9e6ed 22px);border-color:#e2a8be}.archived .slot{background:repeating-linear-gradient(-45deg,#f2eff4,#f2eff4 11px,#e8e3eb 11px,#e8e3eb 22px);border-color:#aaa1b3}.number{position:absolute;left:10px;top:10px;z-index:2;font:800 .67rem Georgia;color:#48323c7a}.status-tape{position:absolute;right:-5px;top:11px;z-index:3;padding:5px 8px;background:#f5e8c5;border:1px solid #d7bd78;color:#80682f;font-size:.61rem;font-weight:900;text-transform:uppercase;transform:rotate(3deg)}.collected .status-tape{background:#e6efdf;border-color:#9db092;color:#57705b}.waiting .status-tape{background:#ffe4ed;border-color:#dda8bb;color:#9e4568}.archived .status-tape{background:#e7e2ec;border-color:#afa4bb;color:#665974}.photo-card{width:84%;height:78%;background:#fff;padding:7px 7px 22px;box-shadow:0 5px 13px #50344033;transform:rotate(-3deg);display:flex;flex-direction:column;justify-content:center;align-items:center}.photo-card b{font:700 2.9rem Georgia;color:#cc7196;opacity:.67}.photo-card em{font: .84rem Segoe Script,Brush Script MT,cursive;text-align:center;color:#603b4a}.uploaded{width:100%;height:100%;object-fit:cover}.empty-mark{white-space:pre-line;text-align:center;width:64%;aspect-ratio:1;border:2px solid #d4bdc6;border-radius:50%;display:grid;place-items:center;color:#a16d83;background:#ffffff73;font-size:.7rem;font-weight:900;text-transform:uppercase}.card-copy{padding:9px 2px 0}.card-copy strong,.card-copy span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-copy strong{font:700 .95rem Georgia}.card-copy span{color:var(--muted);font-size:.68rem;margin-top:4px}.heart,.archive-badge{position:absolute;right:-5px;bottom:57px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;z-index:4}.heart{background:var(--pink);box-shadow:1px 2px var(--berry)}.archive-badge{background:#7a6c86}.heart svg,.archive-badge svg{width:13px}.fab{position:fixed;z-index:19;right:max(18px,calc((100vw - 1120px)/2));bottom:22px;display:flex;align-items:center;gap:7px;border:1px solid var(--berry);background:var(--pink);color:#fff;border-radius:999px;padding:14px 17px;font-weight:900;box-shadow:4px 5px var(--berry)}.fab svg{width:18px}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#37262f7a;z-index:40}.sheet{position:fixed;z-index:50;left:0;right:0;bottom:0;max-height:93vh;overflow:auto;background:var(--paper);border-radius:27px 27px 0 0;padding:10px 18px 35px;box-shadow:0 -10px 40px #33212a33}.grab{width:45px;height:5px;background:#cbbdc1;border-radius:5px;margin:1px auto 16px}.sheet-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.sheet-head h2{font:700 1.45rem Georgia;margin:0;flex:1}.upload{display:grid;grid-template-columns:100px 1fr;gap:14px;background:#fff0f5;border:1px dashed #dca7bc;border-radius:12px;padding:13px;margin-bottom:18px}.preview{width:100px;aspect-ratio:4/5;background:#eadfd7;display:grid;place-items:center;overflow:hidden;border:6px solid #fff;box-shadow:0 4px 12px #50313f26;transform:rotate(-2deg)}.preview img{width:100%;height:100%;object-fit:cover}.upload strong,.upload small{display:block}.upload strong{font-family:Georgia;margin:5px 0}.upload small{color:var(--muted);font-size:.74rem;line-height:1.35}.photo-button{width:max-content;display:flex;align-items:center;gap:5px;background:var(--berry);color:#fff;border-radius:10px;margin-top:9px;padding:8px 10px;font-size:.78rem;font-weight:900}.photo-button svg{width:15px}.photo-button input{display:none}.form{display:grid;gap:13px}.field span{display:block;margin:0 0 6px 2px;font-size:.78rem;font-weight:900}.field input,.field textarea,.field select{width:100%;border:1px solid #dacbc8;border-radius:11px;background:#fffdf9f5;padding:12px 13px;outline:none}.field textarea{min-height:85px;resize:vertical;white-space:pre-wrap}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--pink);box-shadow:0 0 0 3px #e979a726}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:10px}.save{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--berry);border-radius:13px;background:var(--pink);color:#fff;padding:14px;font-weight:900;box-shadow:3px 4px var(--berry)}.save svg{width:18px}.read-only,.auth-sheet p{color:var(--muted);font-size:.82rem}.toast{position:fixed;z-index:80;left:50%;bottom:86px;transform:translate(-50%);max-width:calc(100% - 32px);border:0;background:var(--berry);color:#fff;padding:12px 17px;border-radius:999px;font-weight:800}.empty-results{text-align:center;padding:42px;color:var(--muted)}.preview{position:relative}.preview.scanning img{opacity:.48}.preview.scanning:after{content:"";position:absolute;width:30px;height:30px;border:3px solid #ffffff99;border-top-color:var(--berry);border-radius:50%;animation:spin .8s linear infinite}.photo-link{display:block;border:0;background:none;color:var(--berry);padding:7px 0 0;font-size:.72rem;font-weight:800;text-decoration:underline}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:700px){.app-shell{padding-bottom:45px}.topbar-inner{padding:16px 28px}.brand h1{font-size:1.7rem}main{padding:28px}.cover{padding:28px 30px}.album-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:27px 23px}.fab{bottom:30px}.sheet{left:auto;top:0;right:0;bottom:0;width:min(530px,100%);max-height:none;border-radius:25px 0 0 25px;padding:23px 30px 42px}.grab{display:none}.sticker:hover{transform:translateY(-4px) rotate(0)}}
