:root{--paper:#fdf6ec;--ink:#33302a;--coral:#ff6b57;--mustard:#ffc53d;--mint:#3ec6b0;--taro:#a99bff;--sakura:#ff9ec4;--coral-soft:#ffe3de;--mustard-soft:#fff1cc;--mint-soft:#d8f5ef;--taro-soft:#e9e4ff;--sakura-soft:#ffe4ef;--font-hand:"Chalkboard SE", "Comic Sans MS", "Yuanti SC", "幼圆", "PingFang SC", cursive, sans-serif;--wobble-a:255px 18px 225px 18px / 18px 225px 18px 255px;--wobble-b:18px 225px 18px 255px / 255px 18px 225px 18px;--wobble-c:32px 20px 28px 22px / 22px 28px 20px 32px}*{box-sizing:border-box}body{background-color:var(--paper);color:var(--ink);font-family:var(--font-hand);-webkit-font-smoothing:antialiased;background-image:radial-gradient(#33302a14 1.2px,#0000 1.2px);background-size:26px 26px;margin:0;padding:0}.wrap{max-width:1240px;margin:0 auto;padding:0 20px 60px}input,textarea,select,button{color:inherit;font-family:inherit}a{color:inherit}h1,h2,h3,h4{margin:0}.sticker{border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:var(--wobble-c);background:#fff}.btn{color:var(--ink);border:2.5px solid var(--ink);border-radius:var(--wobble-c);box-shadow:3px 3px 0 var(--ink);cursor:pointer;background:#fff;padding:8px 18px;font-size:16px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-block}.btn:hover{box-shadow:5px 5px 0 var(--ink);transform:translateY(-2px)}.btn:active{box-shadow:2px 2px 0 var(--ink);transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--coral);color:#fff}.btn-mint{background:var(--mint);color:#fff}.btn-mustard{background:var(--mustard)}.btn-sm{box-shadow:2px 2px 0 var(--ink);padding:4px 12px;font-size:13px}.btn:focus-visible,.nav-link:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px dashed var(--coral);outline-offset:2px}.field{border:2.5px solid var(--ink);border-radius:var(--wobble-c);background:#fff;width:100%;padding:10px 14px;font-size:16px}textarea.field{resize:vertical;min-height:90px;line-height:1.6}.label{opacity:.8;margin:16px 0 6px;font-size:14px;display:block}header.top{flex-wrap:wrap;align-items:center;gap:18px;padding:26px 4px 10px;display:flex}.logo{align-items:center;gap:12px;text-decoration:none;display:flex}.logo svg{display:block}.logo h1{letter-spacing:2px;font-size:28px}.logo h1 span{color:var(--coral);display:inline-block;transform:rotate(-4deg)}nav.main-nav{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.nav-link{color:var(--ink);border-radius:var(--wobble-c);border:2.5px solid #0000;padding:8px 16px;font-size:16px;text-decoration:none}.nav-link.active{border-color:var(--ink);background:var(--mustard);box-shadow:3px 3px 0 var(--ink)}.nav-link:not(.active):hover{border-color:var(--ink);background:#fff}.btn-write{color:#fff;background:var(--coral);border:2.5px solid var(--ink);border-radius:var(--wobble-c);box-shadow:4px 4px 0 var(--ink);cursor:pointer;padding:10px 22px;font-size:17px;text-decoration:none;transition:transform .15s,box-shadow .15s;transform:rotate(1.5deg)}.btn-write:hover{box-shadow:6px 6px 0 var(--ink);transform:rotate(0)translateY(-2px)}.couple{cursor:pointer;display:flex;position:relative}.avatar{border:2.5px solid var(--ink);background:var(--sakura-soft);border-radius:50% 46% 52% 48%/48% 52% 46%;place-items:center;width:42px;height:42px;font-size:19px;display:grid}.couple .avatar+.avatar{background:var(--mint-soft);margin-left:-12px}.couple:after{content:"💕";font-size:15px;position:absolute;top:-15px;right:-8px;transform:rotate(15deg)}.hello{padding:26px 4px 6px}.hello h2{text-wrap:balance;margin-bottom:4px;font-size:26px}.hello h2 em{background:linear-gradient(transparent 62%, var(--mustard) 62%, var(--mustard) 92%, transparent 92%);padding:0 3px;font-style:normal}.hello p{opacity:.72;margin:0;font-size:15px}.stats{flex-wrap:wrap;gap:16px;padding:18px 4px 8px;display:flex}.stat{border:2.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;padding:12px 20px 10px;position:relative}.stat:first-child{border-radius:var(--wobble-a);transform:rotate(-1.2deg)}.stat:nth-child(2){border-radius:var(--wobble-b);transform:rotate(.8deg)}.stat:nth-child(3){border-radius:var(--wobble-c);transform:rotate(-.6deg)}.stat .num{font-variant-numeric:tabular-nums;font-size:26px}.stat:first-child .num{color:var(--coral)}.stat:nth-child(2) .num{color:var(--mint)}.stat:nth-child(3) .num{color:var(--taro)}.stat .label{opacity:.75;margin:0;font-size:13px}.stat:before{content:"";background:#ffc53d8c;border-left:1px dashed #33302a40;border-right:1px dashed #33302a40;width:52px;height:16px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-3deg)}.stat:nth-child(2):before{background:#3ec6b066;transform:translate(-50%)rotate(2.5deg)}.stat:nth-child(3):before{background:#ff9ec473;transform:translate(-50%)rotate(-2deg)}.board-title{align-items:center;gap:14px;padding:30px 4px 18px;display:flex}.board-title h3{font-size:22px}.board-title .doodle-line{flex:1;height:10px}.chip{border:2px solid var(--ink);border-radius:var(--wobble-c);background:var(--mint-soft);padding:4px 12px;font-size:13px;transform:rotate(-1deg)}.board{columns:300px;column-gap:22px}.card{break-inside:avoid;border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);cursor:pointer;background:#fff;margin:0 0 22px;text-decoration:none;transition:transform .18s,box-shadow .18s;display:block;position:relative;overflow:hidden}.card:nth-child(4n+1){border-radius:var(--wobble-c);transform:rotate(-.7deg)}.card:nth-child(4n+2){border-radius:var(--wobble-a);transform:rotate(.6deg)}.card:nth-child(4n+3){border-radius:var(--wobble-b);transform:rotate(-.4deg)}.card:nth-child(4n+4){border-radius:var(--wobble-c);transform:rotate(.9deg)}.card:hover{box-shadow:7px 8px 0 var(--ink);transform:rotate(0)translateY(-5px)}.card .pic{border-bottom:2.5px dashed var(--ink);object-fit:cover;background:var(--mustard-soft);width:100%;display:block}.card .tape{z-index:2;background:#ff6b5766;border-left:1px dashed #33302a4d;border-right:1px dashed #33302a4d;width:64px;height:20px;position:absolute;top:-8px;left:24px;transform:rotate(-5deg)}.card:nth-child(2n) .tape{background:#a99bff66;left:auto;right:24px;transform:rotate(4deg)}.card:nth-child(3n) .tape{background:#3ec6b066}.badge-video{background:var(--ink);color:#fff;border-radius:var(--wobble-c);z-index:2;padding:4px 10px;font-size:12px;position:absolute;top:12px;right:12px}.card .body{padding:14px 16px}.card .name{align-items:baseline;gap:8px;margin-bottom:6px;font-size:18px;display:flex}.price{color:#fff;background:var(--mint);border:2px solid var(--ink);border-radius:var(--wobble-c);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto;padding:1px 9px;font-size:14px;transform:rotate(2deg)}.card:nth-child(2n) .price{background:var(--coral);transform:rotate(-2deg)}.card:nth-child(3n) .price{background:var(--taro)}.meta{opacity:.78;align-items:center;gap:6px;margin-bottom:8px;font-size:13.5px;display:flex}.foot{border-top:2px dotted #33302a47;align-items:center;gap:10px;padding-top:9px;font-size:13px;display:flex}.stars{color:var(--mustard);letter-spacing:2px;text-shadow:0 0 1px var(--ink);font-size:15px}.stars .off{color:#33302a2e;text-shadow:none}.date{opacity:.6;font-variant-numeric:tabular-nums}.comments{opacity:.75;margin-left:auto}.empty-tip{text-align:center;opacity:.65;padding:60px 20px;font-size:17px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;padding:4px;display:flex}.toolbar .field{flex:1;width:auto;min-width:160px}.toolbar select.field{flex:none}.table-wrap{border:2.5px solid var(--ink);border-radius:var(--wobble-c);box-shadow:4px 4px 0 var(--ink);background:#fff;overflow-x:auto}table.records{border-collapse:collapse;width:100%;min-width:820px;font-size:15px}table.records th{text-align:left;border-bottom:2.5px solid var(--ink);background:var(--mustard-soft);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;padding:12px 14px}table.records th.plain{cursor:default}table.records td{vertical-align:middle;border-bottom:2px dotted #33302a40;padding:10px 14px}table.records tr:last-child td{border-bottom:none}table.records tbody tr:hover{background:var(--paper)}.thumb{object-fit:cover;border:2px solid var(--ink);background:var(--mustard-soft);border-radius:10px 6px 12px 8px/8px 12px 6px 10px;width:64px;height:48px;display:block}.row-actions{white-space:nowrap;gap:6px;display:flex}.tag{border:1.5px solid var(--ink);border-radius:var(--wobble-c);background:var(--taro-soft);padding:1px 8px;font-size:12px;display:inline-block}.login-box{text-align:center;max-width:400px;margin:9vh auto 0;padding:34px 30px;transform:rotate(-.5deg)}.login-box h2{margin-bottom:4px;font-size:26px}.login-box p.sub{opacity:.7;margin:0 0 22px;font-size:14px}.login-box .field{text-align:left;margin-bottom:14px}.login-error{color:var(--coral);margin:0 0 10px;font-size:14px}.role-pick{justify-content:center;gap:12px;margin-bottom:18px;display:flex}.role-pick button{border:2.5px solid var(--ink);cursor:pointer;background:#fff;border-radius:50% 46% 52% 48%/48% 52% 46%;width:64px;height:64px;font-size:28px;transition:transform .15s}.role-pick button:hover{transform:scale(1.08)}.role-pick button.on{background:var(--mustard);box-shadow:3px 3px 0 var(--ink)}.form-card{max-width:760px;margin:10px auto;padding:26px 28px 30px}.form-grid{grid-template-columns:1fr 1fr;gap:0 22px;display:grid}.form-grid .full{grid-column:1/-1}.upload-zone{border:2.5px dashed var(--ink);border-radius:var(--wobble-c);background:var(--paper);text-align:center;cursor:pointer;opacity:.85;padding:22px;font-size:15px}.upload-zone:hover{background:var(--mustard-soft)}.upload-zone.drag{background:var(--mint-soft)}.media-grid{flex-wrap:wrap;gap:12px;margin-top:14px;display:flex}.media-item{width:120px;position:relative}.media-item img,.media-item video{object-fit:cover;border:2.5px solid var(--ink);background:#fff;border-radius:14px 8px 16px 10px/10px 16px 8px 14px;width:120px;height:90px;display:block}.media-item .rm{border:2px solid var(--ink);background:var(--coral);color:#fff;cursor:pointer;border-radius:50%;width:24px;height:24px;font-size:12px;line-height:1;position:absolute;top:-8px;right:-8px}.media-item .star{border:1.5px solid var(--ink);cursor:pointer;background:#ffffffeb;border-radius:8px;padding:1px 7px;font-size:12px;position:absolute;bottom:6px;left:6px}.media-item .star.on{background:var(--mustard)}.media-item .kind-badge{background:var(--ink);color:#fff;border-radius:6px;padding:1px 6px;font-size:10px;position:absolute;top:6px;left:6px}.rating-pick{letter-spacing:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:26px}.rating-pick .off{opacity:.22}.form-actions{align-items:center;gap:14px;margin-top:26px;display:flex}.hint{opacity:.6;font-size:13px}.detail-head{flex-wrap:wrap;align-items:baseline;gap:14px;padding:18px 4px 6px;display:flex}.detail-head h2{font-size:30px}.detail-meta{flex-wrap:wrap;gap:10px;padding:6px 4px 18px;font-size:14.5px;display:flex}.detail-meta .chip{background:#fff;transform:none}.gallery{flex-wrap:wrap;gap:16px;margin-bottom:8px;display:flex}.gallery img,.gallery video{border:2.5px solid var(--ink);border-radius:var(--wobble-c);max-width:min(420px,100%);max-height:340px;box-shadow:4px 4px 0 var(--ink);object-fit:cover;background:#fff}.notes-block{background:var(--mustard-soft);white-space:pre-wrap;margin:18px 0;padding:16px 20px;font-size:15.5px;line-height:1.8}.feel-grid{grid-template-columns:1fr 1fr;gap:22px;max-width:900px;display:grid}.feel-card{border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:var(--sakura-soft);border-radius:var(--wobble-c);padding:16px 18px 14px;transform:rotate(-.8deg)}.feel-card.second{background:var(--mint-soft);border-radius:var(--wobble-a);transform:rotate(.8deg)}.feel-head{align-items:center;gap:8px;margin-bottom:8px;font-size:16px;display:flex}.feel-head .feel-time{opacity:.55;font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}.feel-card p.content{white-space:pre-wrap;margin:0 0 10px;font-size:14.5px;line-height:1.7}.feel-card p.placeholder{opacity:.5;font-style:italic}.feel-foot{align-items:center;gap:8px;font-size:15px;display:flex}.feel-edit-btn{margin-left:auto}.feel-card textarea.field{background:#ffffffd9;margin-bottom:10px}.emoji-row{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.emoji-row button{cursor:pointer;background:#fffc;border:1.5px solid #0000;border-radius:10px;padding:2px 6px;font-size:18px}.emoji-row button.on{border-color:var(--ink);background:#fff}.gen-layout{flex-wrap:wrap;align-items:flex-start;gap:28px;display:flex}.gen-side{flex-shrink:0;width:300px}.gen-preview{flex:1;justify-content:center;min-width:320px;display:flex}.gen-preview-inner{touch-action:none;max-width:100%;overflow:auto}.gen-preview img,.gen-preview [data-bg]{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.gen-preview img:active,.gen-preview [data-bg]:active{cursor:grabbing}.tpl-list{grid-template-columns:1fr 1fr;gap:12px;display:grid}.tpl-item{border:2.5px solid var(--ink);border-radius:var(--wobble-c);text-align:center;cursor:pointer;box-shadow:2px 2px 0 var(--ink);background:#fff;padding:10px 6px;font-size:14px}.tpl-item .tpl-emoji{margin-bottom:4px;font-size:22px;display:block}.tpl-item.on{background:var(--mustard);transform:rotate(-1deg)}.size-row{gap:8px;margin:16px 0;display:flex}.size-row .btn-sm.on{background:var(--mint);color:#fff}footer.foot-note{text-align:center;opacity:.55;padding-top:44px;font-size:13px}.save-overlay{z-index:100;background:#1e1b16eb;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:20px;display:flex;position:fixed;inset:0}.save-overlay .save-tip{color:#fff;text-align:center;margin:0;font-size:16px}.save-overlay img{object-fit:contain;-webkit-touch-callout:default;border-radius:8px;max-width:92vw;max-height:72vh;box-shadow:0 10px 50px #00000080}.record-cards,.bottom-nav{display:none}@media (width<=720px){.board{columns:2;column-gap:12px}.card{margin-bottom:12px}.card .name{gap:6px;font-size:15.5px}.price{padding:1px 7px;font-size:12px}.card .body{padding:10px 12px}.meta{font-size:12px}.foot{flex-wrap:wrap;gap:6px;font-size:11.5px}.stars{letter-spacing:1px;font-size:12.5px}.logo h1{font-size:22px}.wrap{padding:0 12px calc(104px + env(safe-area-inset-bottom))}.form-grid,.feel-grid{grid-template-columns:1fr}.hello{padding-top:10px}.hello h2{font-size:20px}header.top{gap:10px;padding-top:16px}.stat{padding:8px 14px}.stat .num{font-size:20px}.board-title{padding:20px 4px 14px}.board-title h3{font-size:19px}.form-card{padding:20px 16px 24px}.detail-head h2{font-size:23px}.detail-head>span{width:100%;margin-left:0!important}nav.main-nav .nav-link,nav.main-nav .btn-write{display:none}.bottom-nav{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);z-index:50;background:#fff;border-radius:24px;justify-content:space-around;align-items:center;padding:8px 10px;display:flex;position:fixed}.bottom-nav a{color:var(--ink);opacity:.55;border-radius:16px;flex-direction:column;align-items:center;gap:1px;padding:3px 14px;font-size:12px;text-decoration:none;display:flex}.bottom-nav a .icon{font-size:20px}.bottom-nav a.active{opacity:1;background:var(--mustard-soft);border:1.5px solid var(--ink)}.bottom-nav a.write-fab{opacity:1;background:var(--coral);color:#fff;border:2.5px solid var(--ink);width:56px;height:56px;box-shadow:3px 3px 0 var(--ink);border-radius:50%;place-items:center;margin-top:-30px;padding:0;font-size:24px;display:grid}.table-wrap{display:none}.record-cards{flex-direction:column;gap:14px;display:flex}.record-card{align-items:flex-start;gap:12px;padding:12px;display:flex}.record-card .thumb{flex-shrink:0;width:84px;height:84px}.record-card .rc-body{flex:1;min-width:0}.record-card .rc-title{align-items:baseline;gap:8px;font-size:16.5px;font-weight:600;display:flex}.record-card .rc-title .price{margin-left:auto}.record-card .rc-meta{opacity:.7;margin-top:3px;font-size:12.5px}.record-card .rc-notes{opacity:.6;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12.5px;overflow:hidden}.record-card .rc-foot{flex-wrap:wrap;align-items:center;gap:8px;margin-top:7px;display:flex}.record-card .rc-foot .row-actions{margin-left:auto}.gen-layout{gap:18px}.gen-side{width:100%}.gen-preview{width:100%;min-width:0}}@media (prefers-reduced-motion:reduce){.card,.btn,.btn-write{transition:none}}
