/* My Little Desktop — Phase 8 app styles (reuse tokens and components from os.css / apps.css) */

/* ---------- Photo picker ---------- */
.pick-modal { width: min(560px, 100%); }
.pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; max-height: 300px; overflow-y: auto; padding: 12px 14px; }
.pick-tile { position: relative; padding: 4px; border: 3px solid transparent; border-radius: 10px; background: #fff; cursor: pointer; aspect-ratio: 1; box-shadow: 0 1px 3px rgba(60, 25, 20, .2); }
.pick-tile img { width: 100%; height: 100%; object-fit: cover; border-radius: 6px; display: block; }
.pick-tile[aria-pressed="true"] { border-color: var(--a); }
.pick-check { position: absolute; right: 4px; top: 4px; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 2px solid var(--a); display: none; }
.pick-tile[aria-pressed="true"] .pick-check { display: block; background: var(--a); }
.pick-tile[aria-pressed="true"] .pick-check::after { content: ''; position: absolute; left: 6px; top: 3px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg); }
.modal-actions.row { flex-wrap: wrap; align-items: center; }

/* ---------- Photo Booth ---------- */
.pb-app { display: flex; flex-direction: column; height: 100%; }
.pb-tools { gap: 6px; }
.pb-stage { position: relative; flex: 1; min-height: 0; margin: 10px; border-radius: 16px; overflow: hidden; background: #2a1d1b; border: 6px solid #fff; box-shadow: 0 0 0 3px var(--a), 0 6px 16px rgba(60, 25, 20, .25); display: grid; place-items: center; }
.pb-video { width: 100%; height: 100%; object-fit: cover; display: block; }
.pb-video.mirror { transform: scaleX(-1); }
.pb-stage.vignette::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at center, transparent 55%, rgba(30, 15, 10, .45)); pointer-events: none; }
.pb-empty { color: #f3dcc4; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 20px; max-width: 360px; }
.pb-empty img { width: 70px; }
.pb-empty .hand { font-size: 26px; margin: 0; }
.pb-empty .small { margin: 0 0 8px; }
.pb-msg { position: absolute; top: 8px; left: 8px; right: 8px; margin: 0; padding: 6px 10px; border-radius: 10px; background: rgba(255, 248, 236, .92); font-size: 12px; z-index: 2; }
.pb-count { position: absolute; inset: 0; display: grid; place-items: center; font: 120px var(--f-hand); color: #fff; text-shadow: 0 4px 14px rgba(0, 0, 0, .5); opacity: 0; pointer-events: none; z-index: 3; }
.pb-count.show { opacity: 1; animation: pop .3s ease-out; }
.pb-flash { position: absolute; inset: 0; background: #fff; opacity: 0; pointer-events: none; transition: opacity .15s; z-index: 4; }
.pb-flash.show { opacity: .95; transition: none; }
.pb-badge { position: absolute; top: 10px; right: 10px; background: var(--a); color: var(--on-a); border-radius: 99px; padding: 2px 10px; font-weight: 800; font-size: 12px; z-index: 2; }
.pb-shutter { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); width: 66px; height: 66px; border-radius: 50%; border: 5px solid #fff; background: radial-gradient(circle at 40% 35%, #ff8a8f, var(--a) 55%, var(--a2)); cursor: pointer; box-shadow: 0 4px 12px rgba(0, 0, 0, .35); z-index: 5; padding: 0; }
.pb-shutter span { position: absolute; inset: 10px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .6); }
.pb-shutter:disabled { filter: grayscale(.8); opacity: .6; }
.pb-filters { display: flex; gap: 6px; overflow-x: auto; padding: 0 10px 10px; scrollbar-width: thin; }
.pb-filter { flex: none; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 4px 6px; border: 2px solid transparent; border-radius: 12px; background: #fff; cursor: pointer; font-size: 11px; font-weight: 700; }
.pb-filter[aria-checked="true"] { border-color: var(--a); background: var(--a4); }
.pb-swatch { width: 52px; height: 38px; border-radius: 8px; background: linear-gradient(135deg, #d8313a 0 30%, #6aa63a 30% 55%, #9ccbe8 55% 80%, #f2c14e 80%); }
.pb-result { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 12px; overflow: auto; }
.pb-result img { max-width: 100%; max-height: calc(100% - 50px); border-radius: 8px; box-shadow: 0 6px 18px rgba(60, 25, 20, .3); }
.pb-result img.is-strip { max-height: none; width: min(260px, 70%); }
.pb-actions { justify-content: center; }

/* ---------- Memory Scrapbook ---------- */
.sb-projects { display: flex; flex-direction: column; gap: 12px; }
.sb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.sb-card { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.sb-card strong { font-size: 18px; }
.sb-cover { width: 100%; border: 0; padding: 0; background: none; cursor: pointer; border-radius: 6px; box-shadow: 4px 4px 0 var(--a3), 0 3px 10px rgba(60, 25, 20, .25); }
.sb-thumb { position: relative; width: 100%; aspect-ratio: 3 / 4; border-radius: 6px; overflow: hidden; }
.sb-thumb img { position: absolute; object-fit: cover; border: 3px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .3); background: #f3e6d4; }
.sb-app { display: flex; flex-direction: column; height: 100%; }
.sb-tools { gap: 6px; }
.sb-title { width: 170px; font: 18px var(--f-hand); color: var(--a2); }
.sb-pager { gap: 4px; flex-wrap: nowrap; }
.sb-body { flex: 1; min-height: 0; display: flex; }
.sb-side { width: 170px; }
.sb-add { display: flex; gap: 6px; flex-wrap: wrap; padding: 0 4px; }
.sb-stickers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; padding: 0 4px; }
.sb-sticker { aspect-ratio: 1; border: 1px solid var(--line); background: #fff; border-radius: 10px; cursor: pointer; padding: 4px; display: grid; place-items: center; }
.sb-sticker img { max-width: 100%; max-height: 100%; }
.sb-sticker:hover { border-color: var(--a); }
.sb-bgs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 0 4px; }
.sb-bg { aspect-ratio: 1; border-radius: 8px; border: 2px solid var(--line); cursor: pointer; }
.sb-bg[aria-checked="true"] { border-color: var(--a); box-shadow: 0 0 0 2px var(--a); }
.sb-center { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.sb-stage { flex: 1; min-height: 0; display: grid; place-items: center; background: repeating-conic-gradient(var(--ivory) 0 25%, var(--cream) 0 50%) 0 0/24px 24px; overflow: hidden; }
.sb-page { position: relative; box-shadow: 0 6px 18px rgba(60, 25, 20, .3); border-radius: 4px; overflow: hidden; touch-action: none; }
.scrap-item { position: absolute; transform-origin: center; touch-action: none; user-select: none; outline: none; }
.scrap-item.sel { outline: 2px dashed var(--a2); outline-offset: 3px; }
.scrap-item:focus-visible { outline: 3px solid var(--star); }
.scrap-item img { width: 100%; height: 100%; object-fit: contain; display: block; pointer-events: none; }
.t-text { white-space: pre-wrap; line-height: 1.25; overflow-wrap: anywhere; padding: 0 calc(var(--k, 1) * 4px); }
.t-photo { background: #fff; padding: calc(var(--k, 1) * 10px) calc(var(--k, 1) * 10px) calc(var(--k, 1) * 34px); box-shadow: 0 calc(var(--k, 1) * 3px) calc(var(--k, 1) * 10px) rgba(60, 25, 20, .28); }
.scrap-photo-in { width: 100%; height: 100%; background: #f3e6d4; overflow: hidden; display: grid; place-items: center; }
.scrap-photo-in img { object-fit: cover; }
.scrap-ph { font: calc(var(--k, 1) * 18px) var(--f-hand); color: var(--ink-soft); text-align: center; padding: 6px; }
.scrap-cap { position: absolute; left: 0; right: 0; bottom: calc(var(--k, 1) * 6px); text-align: center; font: calc(var(--k, 1) * 20px) var(--f-hand); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scrap-handle { position: absolute; right: -9px; bottom: -9px; width: 18px; height: 18px; border-radius: 50%; background: var(--a); border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .4); }
.sb-insp { flex: none; padding: 8px 10px; border-top: 2px dashed var(--a3); background: var(--cream); gap: 6px; min-height: 48px; }
.sb-text { width: 220px; min-height: 34px; }
.compact .sb-body { flex-direction: column; }
.compact .sb-side { width: auto; max-height: 30%; }
.compact .sb-stickers, .compact .sb-bgs { grid-template-columns: repeat(6, 1fr); }

/* ---------- Budget Book ---------- */
.budget { display: flex; flex-direction: column; gap: 10px; }
.bg-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; }
.bg-tile { background: #fff; border: 2px solid var(--line); border-radius: 14px; padding: 8px 12px; display: flex; flex-direction: column; }
.bg-tile small { font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .06em; font-size: 11px; }
.bg-tile strong { font: 28px var(--f-hand); color: var(--ink); }
.bg-tile.neg { border-color: var(--danger); }
.bg-tile.pos strong { color: var(--leaf-dark); }
.bg-tile.neg strong { color: var(--danger); }
.bg-flag { font-size: 11px; font-weight: 700; color: var(--ink-soft); }
.bg-form { display: flex; flex-direction: column; gap: 8px; }
.bg-cur { font: 20px var(--f-hand); color: var(--ink-soft); }
.bg-cats { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.bg-cats li { display: grid; grid-template-columns: 100px 1fr auto; gap: 8px; align-items: center; font-size: 13px; }
.bg-cname { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bg-track { height: 14px; border-radius: 4px; background: var(--ivory); overflow: hidden; }
.bg-track i { display: block; height: 100%; background: var(--a); border-radius: 0 4px 4px 0; }
.bg-val { color: var(--ink-soft); font-size: 12px; }
.bg-legend { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; margin-left: 10px; }
.bg-legend i { width: 14px; height: 14px; border-radius: 3px; display: inline-block; }
.b-in { background: #5f9a33; }
.b-out { background: #c62d36; background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, .35) 0 2px, transparent 2px 6px); }
.bg-chart { position: relative; height: 170px; margin: 18px 0 6px 64px; display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; align-items: end; border-bottom: 2px solid var(--line); }
.bg-grid { position: absolute; left: 0; right: 0; border-top: 1px dashed var(--line); }
.bg-grid span { position: absolute; right: calc(100% + 6px); top: -8px; font-size: 11px; color: var(--ink-soft); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bg-col { position: relative; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; border: 0; background: none; cursor: pointer; padding: 0; border-radius: 6px; }
.bg-col:hover, .bg-col:focus-visible { background: var(--a4); }
.bg-col.cur { background: color-mix(in srgb, var(--a) 10%, transparent); }
.bg-bars { display: flex; align-items: flex-end; gap: 2px; height: 100%; width: 70%; }
.bg-bars i { flex: 1; border-radius: 4px 4px 0 0; min-height: 0; }
.bg-mlabel { position: absolute; bottom: -20px; font-size: 11px; color: var(--ink-soft); }
.bg-tip { margin-top: 24px; font-size: 12px; font-weight: 700; color: var(--ink); background: var(--a4); border-radius: 8px; padding: 4px 8px; }
.bg-day h4 { margin: 8px 0 4px; font-size: 17px; color: var(--a2); }
.bg-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.bg-list li { display: flex; align-items: center; gap: 8px; padding: 5px 8px; background: #fff; border: 1px solid var(--ivory); border-radius: 10px; flex-wrap: wrap; }
.bg-list li.income strong { color: var(--leaf-dark); }
.bg-list li.bought { opacity: .65; }
.bg-badge { font-size: 11px; font-weight: 800; padding: 1px 8px; border-radius: 99px; background: var(--a4); color: var(--a2); border: 1px solid var(--a3); }
.bg-badge.big { font-size: 13px; display: inline-flex; align-items: center; gap: 4px; padding: 2px 4px 2px 10px; }
.bg-badge .x, .tc-thumb .x { border: 0; background: none; cursor: pointer; font-weight: 800; color: var(--a2); padding: 0 4px; }
.bg-goals { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.bg-done { font-size: 12px; font-weight: 800; color: var(--leaf-dark); background: #eaf4dc; border-radius: 99px; padding: 1px 8px; }
.love { display: inline-flex; }
.heart-btn { border: 0; background: none; cursor: pointer; font-size: 16px; color: var(--line); padding: 0 1px; }
.heart-btn.on { color: var(--a); }

/* ---------- Focus Timer ---------- */
.ft-app { display: flex; gap: 0; height: 100%; min-height: 0; }
.ft-timer { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 14px; overflow-y: auto; }
.ft-dial { position: relative; width: min(230px, 70%); aspect-ratio: 1; }
.ft-ring { width: 100%; height: 100%; transform: rotate(-90deg); }
.ft-track { fill: #fff; stroke: var(--ivory); stroke-width: 14; }
.ft-prog { fill: none; stroke: var(--a); stroke-width: 14; stroke-linecap: round; transition: stroke-dasharray .4s linear; }
.ft-short .ft-prog, .ft-long .ft-prog { stroke: var(--leaf); }
.ft-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.ft-time { font: 56px/1 var(--f-hand); color: var(--ink); }
.ft-mode { font-size: 18px; color: var(--ink-soft); }
.ft-label { max-width: 300px; text-align: center; }
.ft-main { min-width: 110px; font-size: 15px; }
.ft-side { width: 240px; flex: none; overflow-y: auto; padding: 12px; background: linear-gradient(var(--a4), var(--cream)); border-left: 2px dashed var(--a3); }
.ft-side h4 { margin: 8px 0 4px; font-size: 18px; color: var(--a2); }
.ft-today { margin: 0; }
.ft-today strong { font: 24px var(--f-hand); color: var(--a2); }
.ft-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; height: 110px; align-items: end; border-bottom: 2px solid var(--line); padding-top: 14px; }
.ft-day { height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 2px; font-size: 10px; color: var(--ink-soft); position: relative; }
.ft-day i { width: 70%; background: var(--a); border-radius: 4px 4px 0 0; }
.ft-day.today i { background: var(--a2); }
.ft-v { font-size: 10px; }
.ft-day > span:last-child { position: absolute; bottom: -16px; }
.ft-side details { margin-top: 18px; }
.ft-side summary { cursor: pointer; font-size: 17px; color: var(--a2); }
.ft-set { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 6px 0; font-size: 12px; font-weight: 700; }
.ft-set label { display: flex; flex-direction: column; gap: 2px; }
.ft-set input { width: 64px; }
.ft-side .toggle { font-size: 13px; margin: 6px 0; }
.ft-hist { list-style: none; margin: 6px 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: 12px; }
.ft-hist li { display: flex; gap: 6px; }
.compact .ft-app { flex-direction: column; overflow-y: auto; }
.compact .ft-side { width: auto; border-left: 0; border-top: 2px dashed var(--a3); overflow: visible; }
.compact .ft-timer { overflow: visible; }

/* ---------- Game Center ---------- */
.gc-hub { display: flex; flex-direction: column; gap: 12px; }
.gc-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.gc-card { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px; border-radius: 16px; border: 3px solid var(--a3); background: #fff; cursor: pointer; text-align: center; }
.gc-card:hover, .gc-card:focus-visible { border-color: var(--a); }
.gc-card strong { font-size: 22px; color: var(--a2); }
.gc-card small { color: var(--ink-soft); }
.gc-art { width: 100%; height: 90px; border-radius: 12px; }
.snake-art { background: var(--apple-svg) 78% 50%/28px no-repeat, linear-gradient(90deg, transparent 18%, #6aa63a 18% 22%, #5c9532 22% 26%, #6aa63a 26% 30%, #5c9532 30% 34%, #4a7e22 34% 38%, transparent 38%) 0 50%/100% 16px no-repeat, repeating-conic-gradient(#f4ecd8 0 25%, #fbf5e7 0 50%) 0 0/16px 16px; }
.memory-art { background: var(--apple-svg) 30% 50%/34px no-repeat, var(--apple-green-svg) 70% 50%/34px no-repeat, linear-gradient(90deg, rgba(255,255,255,.35) 50%, transparent 50%) 0 0/14px 14px, var(--a3); }
.gc-scores { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.gc-scores ol { margin: 4px 0; padding-left: 20px; font-size: 13px; }
.gc-game { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.gc-stage { flex: 1; min-height: 0; display: grid; place-items: center; padding: 8px; overflow: auto; }
.snake-canvas { border-radius: 10px; border: 4px solid var(--a); box-shadow: 0 4px 12px rgba(60, 25, 20, .25); touch-action: none; }
.gc-msg { text-align: center; font: 18px var(--f-hand); color: var(--a2); min-height: 26px; padding: 0 10px; }
.gc-pad { display: grid; grid-template-columns: repeat(3, 48px); grid-template-rows: repeat(3, 40px); gap: 4px; justify-content: center; margin: 4px auto 6px; }
.gc-btn { border: 1px solid var(--a2); border-radius: 10px; background: linear-gradient(color-mix(in srgb, var(--a) 50%, #fff), var(--a)); color: var(--on-a); font-size: 16px; cursor: pointer; touch-action: none; }
.gc-up { grid-column: 2; grid-row: 1; } .gc-left { grid-column: 1; grid-row: 2; } .gc-play { grid-column: 2; grid-row: 2; background: #fff; color: var(--a2); } .gc-right { grid-column: 3; grid-row: 2; } .gc-down { grid-column: 2; grid-row: 3; }
.mm-grid { display: grid; gap: 8px; width: min(100%, 460px); }
.mm-grid.c4 { grid-template-columns: repeat(4, 1fr); } .mm-grid.c5 { grid-template-columns: repeat(5, 1fr); }
.mm-card { aspect-ratio: 1; border: 0; background: none; padding: 0; cursor: pointer; perspective: 600px; }
.mm-inner { position: relative; display: block; width: 100%; height: 100%; transition: transform .35s; transform-style: preserve-3d; }
.mm-card.up .mm-inner { transform: rotateY(180deg); }
.mm-back, .mm-front { position: absolute; inset: 0; border-radius: 12px; backface-visibility: hidden; -webkit-backface-visibility: hidden; display: grid; place-items: center; box-shadow: 0 2px 6px rgba(60, 25, 20, .25); }
.mm-back { background: var(--apple-svg) center/42% no-repeat, linear-gradient(90deg, rgba(255, 255, 255, .35) 50%, transparent 50%) 0 0/12px 12px, linear-gradient(rgba(255, 255, 255, .35) 50%, transparent 50%) 0 0/12px 12px, var(--a); border: 3px solid #fff; }
.mm-front { background: #fff; transform: rotateY(180deg); border: 3px solid var(--a3); }
.mm-front img { width: 72%; }
.mm-card.done .mm-front { border-color: var(--leaf); background: #f1f8e6; }
#os.motion-off .mm-inner, #os.motion-reduced .mm-inner { transition: none; }

/* ---------- Mailbox & Capsules ---------- */
.mb, .tc { display: flex; flex-direction: column; gap: 10px; }
.mb-note { margin: 0; padding: 8px 12px; border-radius: 12px; background: #fff7d6; border: 1px dashed #e3c25a; font-size: 12px; color: #6b4a07; }
.mb-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.mb-env { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; background: #fffaf0; border: 2px solid var(--line); flex-wrap: wrap;
  background-image: linear-gradient(160deg, transparent 49.5%, var(--line) 50%, transparent 50.5%), linear-gradient(20deg, transparent 49.5%, var(--line) 50%, transparent 50.5%); background-size: 100% 60%; background-repeat: no-repeat; }
.mb-env .grow { display: flex; flex-direction: column; background: rgba(255, 250, 240, .9); border-radius: 8px; padding: 2px 6px; }
.mb-env strong { font-size: 19px; }
.mb-env.ready { border-color: var(--a); box-shadow: 0 0 0 3px var(--a3); }
.mb-env.opened { opacity: .85; }
.mb-seal { width: 38px; height: 38px; flex: none; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 16px; background: radial-gradient(circle at 35% 30%, #ef6b72, var(--a2)); box-shadow: 0 2px 4px rgba(0, 0, 0, .3), inset 0 0 0 3px rgba(255, 255, 255, .25); }
.mb-compose .paper-wrap { min-height: 200px; }
.mb-letter { background: #fffef9; border: 2px solid var(--line); border-radius: 12px; padding: 16px 20px; box-shadow: 0 3px 0 var(--ivory); background-image: linear-gradient(transparent 31px, color-mix(in srgb, var(--a) 18%, transparent) 32px); background-size: 100% 32px; }
.mb-letter h3 { margin: 0 0 6px; font-size: 26px; color: var(--a2); }
.mb-text { white-space: pre-wrap; font-size: 20px; line-height: 32px; overflow-wrap: anywhere; }
.mb-sign { text-align: right; font-size: 20px; color: var(--a2); }
.tc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; }
.tc-card { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px; border-radius: 16px; background: #fff; border: 2px solid var(--line); text-align: center; }
.tc-card strong { font-size: 19px; }
.tc-card.ready { border-color: var(--a); box-shadow: 0 0 0 3px var(--a3); }
.tc-jar { position: relative; }
.tc-jar img { width: 70px; }
.tc-card.sealed .tc-jar img { filter: saturate(.7); }
.tc-lock { position: absolute; right: -6px; bottom: 0; font-size: 20px; }
.tc-thumbs { display: flex; gap: 8px; flex-wrap: wrap; }
.tc-thumb { position: relative; width: 72px; height: 72px; }
.tc-thumb img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px; border: 3px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .3); }
.tc-thumb .x { position: absolute; top: -6px; right: -6px; background: #fff; border-radius: 50%; width: 22px; height: 22px; box-shadow: 0 1px 2px rgba(0, 0, 0, .3); }
.tc-add { width: 72px; height: 72px; border-radius: 8px; border: 2px dashed var(--a); background: var(--a4); color: var(--a2); font-weight: 800; font-size: 12px; cursor: pointer; }
.tc-open { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; background: #fffef9; border: 2px solid var(--line); border-radius: 16px; padding: 16px; }
.tc-open.pop .tc-big { animation: capsulePop .9s ease-out; }
@keyframes capsulePop { 0% { transform: scale(.6) rotate(-8deg); } 60% { transform: scale(1.15) rotate(6deg); } 100% { transform: none; } }
.tc-big { width: 90px; }
.tc-open h3 { margin: 0; font-size: 28px; color: var(--a2); }
.tc-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; width: 100%; }
.tc-photos img { width: 100%; aspect-ratio: 1; object-fit: cover; border: 5px solid #fff; border-radius: 4px; box-shadow: 0 2px 6px rgba(60, 25, 20, .25); }

/* ================= My Little Web ♡ — browser chrome ================= */
.mlw { display: flex; flex-direction: column; height: 100%; min-height: 0; container-type: inline-size; background: var(--paper); }
.mlw-tabs { display: flex; align-items: flex-end; gap: 3px; padding: 6px 8px 0; overflow-x: auto; scrollbar-width: thin; background: linear-gradient(var(--a4), color-mix(in srgb, var(--a3) 60%, #fff)); flex: none; }
.mlw-tab { display: flex; align-items: center; max-width: 190px; min-width: 96px; flex: 0 1 auto; border: 1px solid color-mix(in srgb, var(--a) 45%, #fff); border-bottom: 0; border-radius: 10px 10px 0 0; background: rgba(255, 255, 255, .55); }
.mlw-tab.on { background: var(--paper); box-shadow: 0 -1px 3px rgba(0, 0, 0, .08); }
.mlw-tab-btn { flex: 1; min-width: 0; border: 0; background: none; padding: 6px 4px 6px 10px; font: 600 12px var(--f-body); color: var(--ink); text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; min-height: 30px; }
.mlw-tab-x { border: 0; background: none; width: 26px; height: 26px; border-radius: 50%; cursor: pointer; color: var(--ink-soft); font-size: 15px; flex: none; }
.mlw-tab-x:hover { background: var(--a3); color: var(--ink); }
.mlw-newtab { flex: none; width: 30px; height: 28px; margin-bottom: 2px; border: 1px solid color-mix(in srgb, var(--a) 45%, #fff); border-radius: 50%; background: rgba(255, 255, 255, .7); font: 700 17px var(--f-body); color: var(--a2); cursor: pointer; }
.mlw-bar { display: flex; align-items: center; gap: 4px; padding: 6px 8px; flex: none; flex-wrap: wrap; border-bottom: 2px solid var(--a3); background: linear-gradient(#fff, var(--paper)); }
.mlw-nav { flex: none; width: 32px; height: 32px; border-radius: 50%; border: 1px solid color-mix(in srgb, var(--a) 55%, #333); background: linear-gradient(#fff, color-mix(in srgb, var(--a) 30%, #fff) 60%, color-mix(in srgb, var(--a) 55%, #fff)); color: var(--a2); font: 700 15px/1 var(--f-body); cursor: pointer; display: grid; place-items: center; padding: 0; box-shadow: inset 0 1px 0 #fff, 0 1px 2px rgba(0, 0, 0, .15); }
.mlw-nav:hover:not(:disabled) { filter: brightness(1.06); }
.mlw-nav:active:not(:disabled) { transform: translateY(1px); }
.mlw-nav:disabled { opacity: .4; cursor: default; }
.n-back::before { content: '◀'; font-size: 12px; } .n-fwd::before { content: '▶'; font-size: 12px; }
.n-reload::before { content: '↻'; font-size: 18px; } .n-home::before { content: '⌂'; font-size: 19px; }
.n-star::before { content: '☆'; font-size: 18px; } .n-star.on::before { content: '★'; color: var(--a); }
.n-bm::before { content: '❤'; font-size: 14px; } .n-hist::before { content: '🕘'; font-size: 14px; } .n-info::before { content: 'i'; font: italic 700 16px Georgia, serif; }
.mlw-addr-wrap { flex: 1 1 220px; min-width: 140px; display: flex; align-items: center; gap: 6px; }
.mlw-addr-label { font: 12px Tahoma, Verdana, sans-serif; color: var(--ink-soft); }
.mlw-addr { flex: 1; min-width: 0; height: 32px; border-radius: 6px; padding: 0 10px; font-family: Tahoma, Verdana, sans-serif; }
.mlw-go { flex: none; min-height: 32px; }
.mlw-page { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; -webkit-overflow-scrolling: touch; }
.mlw-page > .mlw-bm { display: flex; flex: 1; min-height: 0; }
.mlw-status { flex: none; display: flex; align-items: center; gap: 8px; padding: 3px 10px; font: 11px Tahoma, Verdana, sans-serif; color: var(--ink-soft); border-top: 1px solid var(--line); background: linear-gradient(#fff, var(--a4)); }
.mlw-status-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mlw-zone { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.mlw-badge { width: 32px; height: 32px; flex: none; border-radius: 9px; display: grid; place-items: center; background: var(--a4); border: 1px solid var(--a3); font-size: 17px; }
.mlw-bmlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.mlw-bmlist li { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 10px; background: rgba(255, 255, 255, .8); border: 1px solid var(--line); flex-wrap: wrap; }
.mlw-bmlist li.empty { display: block; background: none; border: 0; }
.mlw-bmlist .grow { min-width: 140px; display: flex; flex-direction: column; }
.mlw-bmtitle { font-size: 14px; text-align: left; overflow-wrap: anywhere; font-weight: 700; }
.mlw-url { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.mlw-time { width: 64px; flex: none; }
.mlw-hist h4 { margin: 14px 0 6px; font-size: 18px; color: var(--a2); font-weight: 400; }
.mlw-help p, .mlw-histpage > p { line-height: 1.5; }
.mlw-welcome { max-width: 440px; }
.mlw-wbody { padding: 4px 18px; max-height: min(60vh, 420px); overflow: auto; }
.mlw-wbody h3 { font-size: 25px; color: var(--a2); margin: 10px 0 2px; text-align: center; }
.mlw-wbody p { margin: 8px 0; font-weight: 400; line-height: 1.5; }
.mlw-wbody .mlw-wsub { font-size: 19px; color: var(--a2); text-align: center; margin: 4px 0; }

/* ================= My Little Web — the Y2K mini-internet sites ================= */
.ow-site { --rb: repeating-linear-gradient(90deg, #ffd1dc 0 14px, #ffe4c4 14px 28px, #fff4b3 28px 42px, #d9f5c8 42px 56px, #cfe8ff 56px 70px, #e8d6ff 70px 84px);
  --spark: radial-gradient(circle, #fff 0 1.4px, transparent 2px);
  flex: 1; padding: 12px; font: 13px/1.5 Verdana, Tahoma, 'Trebuchet MS', sans-serif; color: color-mix(in srgb, var(--a2) 80%, #000); display: flex; flex-direction: column; gap: 10px; min-height: 100%; }
.ow-site.ow-plain { background: var(--paper); }
.ow-site.ow-dir, .ow-bg-rainbow { background: var(--spark) 0 0 / 38px 38px, var(--spark) 19px 19px / 38px 38px, var(--rb); }
.ow-site.ow-blog, .ow-bg-gingham { background: repeating-linear-gradient(0deg, color-mix(in srgb, var(--a) 22%, transparent) 0 14px, transparent 14px 28px), repeating-linear-gradient(90deg, color-mix(in srgb, var(--a) 22%, transparent) 0 14px, transparent 14px 28px), #fff; }
.ow-site.ow-gb, .ow-site.ow-shop, .ow-bg-hearts { background: radial-gradient(circle at 30% 35%, var(--a3) 0 5px, transparent 6px) 0 0 / 34px 34px, radial-gradient(circle at 70% 35%, var(--a3) 0 5px, transparent 6px) 0 0 / 34px 34px, conic-gradient(from 135deg at 50% 62%, var(--a3) 0 90deg, transparent 0) 0 0 / 34px 34px, var(--a4); }
.ow-bg-stars { background: radial-gradient(circle, #fff 0 1.2px, transparent 2px) 0 0 / 46px 46px, radial-gradient(circle, #ffe9a8 0 1.6px, transparent 2.4px) 23px 17px / 46px 46px, radial-gradient(circle, #fff 0 .9px, transparent 1.5px) 11px 31px / 30px 30px, linear-gradient(#20134a, #3b1f6b 60%, #5a2b72); }
.ow-site.ow-cafe, .ow-bg-dots { background: radial-gradient(circle, color-mix(in srgb, var(--a) 30%, #fff) 0 5px, transparent 6px) 0 0 / 28px 28px, radial-gradient(circle, color-mix(in srgb, var(--a) 30%, #fff) 0 5px, transparent 6px) 14px 14px / 28px 28px, #fff8ee; }
.ow-site.ow-mem { background: linear-gradient(160deg, var(--a4), #fff8ee 50%, color-mix(in srgb, var(--a3) 50%, #fff)); }
.ow-bg-sparkle { background: var(--spark) 0 0 / 22px 22px, var(--spark) 11px 11px / 22px 22px, radial-gradient(circle at 30% 20%, #ffd6ec, transparent 60%), linear-gradient(135deg, #ff9ccc, #c9a6ff 50%, #9fd5ff); }
.ow-site.ow-closet { background: repeating-linear-gradient(90deg, var(--a4) 0 22px, #fff 22px 44px); }
.ow-bg-orchard { background-color: var(--a4); background-position: center; background-size: cover; }
.ow-bg-plain { background: var(--paper); }
.ow-site.ow-search-page { background: var(--paper); }

.ow-banner { border: 3px solid var(--a); border-radius: 4px; background: var(--spark) 0 0 / 30px 30px, var(--rb); padding: 10px 14px; text-align: center; box-shadow: 0 2px 0 color-mix(in srgb, var(--a) 40%, transparent); }
.ow-title { margin: 0; font: 400 clamp(28px, 6cqi, 46px)/1.05 var(--f-hand); color: var(--a); letter-spacing: .5px;
  text-shadow: 0 3px 0 #fff, 3px 0 0 #fff, -3px 0 0 #fff, 0 -3px 0 #fff, 2px 2px 0 #fff, -2px -2px 0 #fff, 2px -2px 0 #fff, -2px 2px 0 #fff, 0 6px 6px rgba(0, 0, 0, .18); overflow-wrap: anywhere; }
.ow-sub { margin: 4px 0 0; font-size: 12px; font-weight: 700; color: var(--a2); }
.ow-font-pixel { font-family: 'Courier New', monospace; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; }
.ow-font-script { font-family: 'Brush Script MT', 'Snell Roundhand', 'Segoe Script', cursive; font-style: italic; }
.ow-font-comic { font-family: 'Comic Sans MS', 'Comic Neue', 'Chalkboard SE', cursive; font-weight: 700; }
.ow-box { border: 3px solid var(--a3); background: #fff; border-radius: 4px; box-shadow: 0 2px 0 rgba(0, 0, 0, .05); min-width: 0; }
.ow-box-h { margin: 0; padding: 4px 10px; font: 400 22px/1.1 var(--f-hand); color: var(--a); background: var(--spark) 0 0 / 24px 24px, var(--rb); border-bottom: 3px solid var(--a3); text-align: center;
  text-shadow: 0 2px 0 #fff, 2px 0 0 #fff, -2px 0 0 #fff, 0 -2px 0 #fff, 1px 1px 0 #fff, -1px -1px 0 #fff; }
.ow-box-b { padding: 10px 12px; }
.ow-box-b > p:first-child { margin-top: 0; } .ow-box-b > p:last-child { margin-bottom: 0; }
.ow-link { border: 0; background: none; padding: 0; font: inherit; color: var(--a2); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; text-align: left; }
.ow-link:hover { color: var(--a); text-decoration-style: wavy; }
.ow-link[aria-current="true"] { color: var(--a); text-decoration-style: double; }
.ow-mini { border: 1px solid var(--a3); background: #fff; border-radius: 99px; padding: 3px 10px; font: 700 11px Verdana, sans-serif; color: var(--a2); cursor: pointer; text-decoration: none; min-height: 26px; }
.ow-mini:hover:not(:disabled) { background: var(--a4); }
.ow-mini:disabled { opacity: .55; cursor: default; }
.ow-mini[aria-pressed="true"] { background: var(--a); color: var(--on-a); border-color: var(--a); }
.ow-flabel { display: block; font-weight: 700; font-size: 12px; margin: 6px 0 4px; }
.ow-empty { text-align: center; padding: 16px 8px; font: 18px var(--f-hand); color: var(--ink-soft); }
.ow-empty p { margin: 0 0 8px; }
.ow-list { margin: 0; padding-left: 18px; }
.ow-list li { margin: 3px 0; }
.ow-chiprow { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.ow-chip { background: #fff; border: 2px solid var(--a3); border-radius: 99px; padding: 4px 12px; text-decoration: none; }
.ow-notice { max-width: 500px; margin: 10px auto; padding: 20px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; background: #fff; border: 3px solid var(--a3); border-radius: 8px; }
.ow-notice h3 { margin: 0; font-size: 24px; color: var(--a2); line-height: 1.2; }
.ow-notice p { margin: 0; }
.ow-emoji { font-size: 44px; line-height: 1; }
.ow-sticker { display: inline-grid; place-items: center; font-size: 26px; line-height: 1; filter: drop-shadow(1px 0 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 1px 0 #fff) drop-shadow(0 -1px 0 #fff) drop-shadow(0 2px 2px rgba(0, 0, 0, .25)); }
.ow-sticker.big { font-size: 40px; }
.ow-stickerrow { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.ow-subnav { display: flex; flex-wrap: wrap; gap: 4px; }
.ow-tabbtn { border: 2px solid var(--a3); border-radius: 8px 8px 0 0; background: rgba(255, 255, 255, .85); padding: 5px 12px; font: 700 12px Verdana, sans-serif; color: var(--a2); cursor: pointer; min-height: 32px; }
.ow-tabbtn[aria-current="true"] { background: var(--a); color: var(--on-a); border-color: var(--a); }
.ow-points { display: inline-flex; align-items: center; gap: 4px; padding: 4px 12px; border-radius: 99px; background: linear-gradient(#fff7c2, #ffe17a); border: 2px solid #e8b931; font: 700 12px Verdana, sans-serif; color: #7a5200; white-space: nowrap; }
.ow-layout { display: grid; grid-template-columns: 170px minmax(0, 1fr) 190px; gap: 10px; align-items: start; }
.ow-layout.two { grid-template-columns: minmax(0, 1fr) 220px; }
.ow-col { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.ow-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ow-form { display: flex; flex-direction: column; gap: 8px; }
.ow-form label { display: flex; flex-direction: column; gap: 4px; font-weight: 700; font-size: 12px; }
.ow-form-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.ow-form-row > * { min-width: 140px; }
.ow-opts { display: flex; flex-wrap: wrap; gap: 5px; }
.ow-opt { border: 2px solid var(--a3); background: #fff; border-radius: 99px; padding: 4px 11px; font: 700 12px Verdana, sans-serif; color: var(--ink); cursor: pointer; min-height: 30px; }
.ow-opt.emoji { font-size: 18px; padding: 2px 8px; }
.ow-opt[aria-checked="true"], .ow-opt[aria-pressed="true"] { background: var(--a); border-color: var(--a); color: var(--on-a); }
.ow-swatches { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ow-thumb { width: 72px; height: 72px; border-radius: 6px; overflow: hidden; border: 3px solid #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .25); flex: none; }
.ow-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* directory */
.ow-dir-top { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ow-searchrow { display: flex; gap: 6px; flex: 1 1 260px; }
.ow-search { flex: 1; min-width: 0; }
.ow-clock { font-weight: 700; background: #fff; border: 2px solid var(--a3); border-radius: 99px; padding: 3px 10px; font-size: 12px; }
.ow-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.ow-card { background: #fff; border: 3px solid var(--a3); border-radius: 6px; display: flex; flex-direction: column; overflow: hidden; }
.ow-card-main { border: 0; background: none; text-align: left; padding: 10px 12px 6px; display: flex; flex-direction: column; gap: 2px; cursor: pointer; font: inherit; color: inherit; flex: 1; }
.ow-card-main:hover { background: var(--a4); }
.ow-card-main strong { font: 400 22px/1.1 var(--f-hand); color: var(--a); }
.ow-card-main small { color: var(--ink-soft); font-family: Tahoma, sans-serif; }
.ow-card-emoji { font-size: 30px; line-height: 1.1; }
.ow-card-desc { font-size: 12px; margin-top: 4px; }
.ow-card-actions { display: flex; gap: 4px; padding: 6px 10px 10px; flex-wrap: wrap; }

/* homepage */
.ow-edit-row { display: flex; justify-content: flex-end; }
.ow-home-banner { padding: 18px 14px; }
.ow-marquee { overflow: hidden; white-space: nowrap; background: #fff; border: 2px dashed var(--a); border-radius: 4px; padding: 3px 0; font-weight: 700; color: var(--a); }
.ow-marquee span { display: inline-block; padding-left: 100%; animation: owmarquee 14s linear infinite; }
@keyframes owmarquee { to { transform: translateX(-100%); } }
.motion-off .ow-marquee span, .motion-reduced .ow-marquee span { animation: none; padding-left: 10px; }
.ow-linklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.ow-counter { display: flex; justify-content: center; gap: 2px; }
.ow-counter span { background: #111; color: #7dff7d; font: 700 16px 'Courier New', monospace; padding: 2px 4px; border-radius: 2px; box-shadow: inset 0 0 4px rgba(125, 255, 125, .4); }
.ow-welcome { white-space: pre-wrap; text-align: center; font-weight: 700; color: var(--a); }
.ow-update { padding: 6px 0; border-bottom: 1px dashed var(--a3); }
.ow-update:last-child { border-bottom: 0; }
.ow-update p { margin: 4px 0 0; }
.ow-construction { text-align: center; font: 700 12px Verdana, sans-serif; padding: 6px; border: 2px solid #1d1d1d; color: #1d1d1d; background: repeating-linear-gradient(45deg, #ffd23f 0 12px, #fff1a8 12px 24px); border-radius: 4px; }
.ow-about { text-align: center; }
.ow-about p { white-space: pre-wrap; margin: 8px 0 0; }
.ow-profile { width: 120px; height: 120px; margin: 0 auto; border: 4px solid #fff; outline: 3px solid var(--a3); border-radius: 6px; overflow: hidden; display: grid; place-items: center; background: var(--a4); font-size: 50px; }
.ow-profile.small { width: 64px; height: 64px; font-size: 28px; margin: 0; }
.ow-profile img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ow-song { text-align: center; }
.ow-song p { margin: 0 0 6px; }
.ow-editor { background: #fff; border: 3px solid var(--a); border-radius: 8px; padding: 12px; display: flex; flex-direction: column; gap: 10px; box-shadow: 0 4px 14px rgba(0, 0, 0, .12); }
.ow-editor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; }
.ow-editor-grid label { display: flex; flex-direction: column; gap: 4px; font-weight: 700; font-size: 12px; }
.ow-editor-grid .wide { grid-column: 1 / -1; }
.ow-toggles { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; font-size: 13px; }
.ow-bgswatch { width: 46px; height: 34px; border-radius: 6px; border: 2px solid #fff; outline: 2px solid var(--line); cursor: pointer; padding: 0; }
.ow-bgswatch[aria-checked="true"] { outline: 3px solid var(--a); }
.ow-stickerpick { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.ow-stickbtn { font-size: 22px; width: 40px; height: 40px; border-radius: 8px; border: 2px solid var(--line); background: #fff; cursor: pointer; padding: 0; }
.ow-stickbtn[aria-pressed="true"] { border-color: var(--a); background: var(--a4); box-shadow: inset 0 0 0 2px #fff; }

/* blog */
.ow-post { background: #fff; border: 3px solid var(--a3); border-radius: 4px; padding: 10px 14px; position: relative; }
.ow-post-date { font: 700 11px Tahoma, sans-serif; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .5px; }
.ow-post-title { margin: 2px 0; font: 400 24px/1.15 var(--f-hand); color: var(--a); }
.ow-post-title .ow-link { text-decoration: none; color: inherit; font-weight: 400; }
.ow-post-mood { font-size: 12px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ow-post-mood > span:first-of-type { background: var(--a4); border-radius: 99px; padding: 1px 8px; font-weight: 700; }
.ow-post-sticker { margin-left: auto; font-size: 30px; }
.ow-post-photo { margin: 8px 0; text-align: center; }
.ow-post-photo img { max-width: 100%; max-height: 320px; border: 5px solid #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, .25); border-radius: 2px; }
.ow-post-body { white-space: pre-wrap; margin: 8px 0; overflow-wrap: anywhere; }
.ow-post-foot { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; border-top: 1px dashed var(--a3); padding-top: 6px; }
.ow-moods { display: flex; flex-wrap: wrap; gap: 5px; }
.ow-moodbtn { border: 2px solid var(--a3); background: #fff; border-radius: 99px; padding: 3px 10px; cursor: pointer; font: 700 12px Verdana, sans-serif; color: var(--ink); min-height: 30px; }
.ow-moodbtn[aria-checked="true"] { background: var(--a); color: var(--on-a); border-color: var(--a); }
.ow-moodcount { display: flex; flex-wrap: wrap; gap: 6px; font-size: 15px; }

/* guestbook */
.ow-gblist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ow-gbentry { border: 2px dashed var(--a3); border-radius: 6px; padding: 8px 10px; background: #fffdf8; }
.ow-gbhead { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.ow-gbentry p { margin: 6px 0 0; white-space: pre-wrap; font-family: 'Comic Sans MS', 'Comic Neue', 'Chalkboard SE', var(--f-hand); font-size: 14px; overflow-wrap: anywhere; }

/* café */
.ow-builder { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 14px; align-items: start; }
.ow-cup { width: 150px; aspect-ratio: 200 / 240; background: radial-gradient(circle at 50% 85%, rgba(0, 0, 0, .1), transparent 55%); }
.ow-cup svg { width: 100%; height: 100%; display: block; }
.ow-cup.small { width: 70px; flex: none; }
.ow-cup.tiny { width: 34px; flex: none; display: inline-block; }
.ow-builder-opts { display: flex; flex-direction: column; }
.ow-builder-opts label { margin-top: 8px; }
.ow-builder-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; background: #fff; border: 3px solid var(--a3); border-radius: 4px; padding: 8px 12px; }
.ow-stamps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.ow-stamp { aspect-ratio: 1; border: 2px dashed var(--a3); border-radius: 50%; display: grid; place-items: center; font-size: 18px; background: #fffdf8; }
.ow-stamp.on { border-style: solid; border-color: var(--a); background: var(--a4); }
.ow-menu { display: flex; flex-direction: column; gap: 8px; }
.ow-menu-item { display: flex; gap: 10px; align-items: center; background: #fff; border: 3px solid var(--a3); border-radius: 6px; padding: 8px 12px; }
.ow-menu-item p { margin: 2px 0 6px; }
.ow-orders { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.ow-orders li { display: flex; gap: 8px; align-items: center; border-bottom: 1px dashed var(--a3); padding-bottom: 6px; }

/* memory lane */
.ow-timeline { display: flex; flex-direction: column; gap: 6px; }
.ow-year { margin: 6px 0; font: 400 30px var(--f-hand); color: var(--a); text-shadow: 0 2px 0 #fff, 2px 0 0 #fff, -2px 0 0 #fff; }
.ow-memcard { display: flex; gap: 10px; background: #fff; border: 3px solid var(--a3); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; position: relative; }
.ow-memcard h4 { margin: 2px 0 6px; font: 400 21px/1.15 var(--f-hand); color: var(--a); }
.ow-memcard h4 .ow-link { text-decoration: none; font-weight: 400; color: inherit; }
.ow-memcard p { white-space: pre-wrap; margin: 6px 0; overflow-wrap: anywhere; }
.ow-memdot { width: 40px; height: 40px; flex: none; border-radius: 50%; display: grid; place-items: center; font-size: 22px; background: var(--a4); border: 2px solid var(--a3); }
.ow-memcard.full { max-width: 640px; width: 100%; margin: 0 auto; }

/* sticker shop */
.ow-shelf { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
.ow-shelf-item { display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center; border: 2px solid var(--a3); border-radius: 8px; padding: 8px 4px; background: #fffdf8; }
.ow-shelf-item.owned { background: var(--a4); }
.ow-shelf-item strong { font-size: 12px; line-height: 1.2; }
.ow-shelf-item small { color: var(--ink-soft); }
.ow-book { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }
.ow-book-slot { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 2px; border-radius: 8px; background: #fffdf8; border: 2px solid var(--a3); text-align: center; font-size: 11px; }
.ow-book-slot.empty { border-style: dashed; opacity: .6; }
.ow-book-slot.empty .ow-sticker { color: var(--ink-soft); font: 700 28px var(--f-hand); filter: none; }

/* closet */
.ow-closet-filters { display: flex; flex-direction: column; gap: 8px; background: rgba(255, 255, 255, .85); border: 3px solid var(--a3); border-radius: 6px; padding: 8px 10px; }
.ow-closet-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.ow-cl-item { background: #fff; border: 3px solid var(--a3); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
.ow-item-tile { aspect-ratio: 1; display: grid; place-items: center; position: relative; box-shadow: inset 0 -30px 40px rgba(255, 255, 255, .3); border-bottom: 2px solid var(--a3); }
.ow-item-tile.small { width: 64px; flex: none; border: 2px solid var(--a3); border-radius: 6px; overflow: hidden; }
.ow-item-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ow-item-emoji { font-size: 44px; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .25)); }
.small .ow-item-emoji { font-size: 26px; }
.ow-cl-meta { padding: 6px 8px 0; display: flex; flex-direction: column; }
.ow-cl-meta strong { overflow-wrap: anywhere; }
.ow-cl-actions { display: flex; gap: 4px; padding: 6px 8px 8px; flex-wrap: wrap; }
.ow-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; }
.ow-slot { display: flex; flex-direction: column; }
.ow-preview { display: flex; flex-wrap: wrap; gap: 8px; }
.ow-prev-item { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 72px; text-align: center; font-size: 11px; }
.ow-outfits { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.ow-outfit .row input[type=date] { width: auto; min-height: 30px; padding: 2px 6px; }

/* search */
.ow-results { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.ow-results li { display: flex; gap: 8px; align-items: flex-start; }
.ow-res-e { font-size: 20px; width: 28px; text-align: center; flex: none; }

@container (max-width: 720px) {
  .ow-layout { grid-template-columns: minmax(0, 1fr) 180px; }
  .ow-layout > .ow-col:first-child:not(.ow-main) { grid-column: 1 / -1; order: 3; }
}
@container (max-width: 560px) {
  .mlw-addr-wrap { order: 10; flex: 1 1 calc(100% - 60px); }
  .mlw-addr-label { display: none; }
  .mlw-go { order: 11; }
  .mlw-page > .mlw-bm { flex-direction: column; }
  .mlw-page > .mlw-bm .side { width: auto; border-right: 0; border-bottom: 2px dashed var(--a3); max-height: 40%; }
  .mlw-page > .mlw-bm .side-list { flex-direction: row; flex-wrap: wrap; }
  .mlw-page > .mlw-bm .side-item { width: auto; }
  .mlw-zone { display: none; }
  .ow-site { padding: 8px; }
  .ow-layout, .ow-layout.two, .ow-two, .ow-editor-grid { grid-template-columns: minmax(0, 1fr); }
  .ow-layout > .ow-col { order: 0 !important; }
  .ow-layout > .ow-main { order: -1 !important; }
  .ow-builder { grid-template-columns: minmax(0, 1fr); justify-items: center; }
  .ow-builder-opts { width: 100%; }
  .ow-cup { width: 120px; }
}
@container (max-width: 400px) {
  .mlw-nav { width: 36px; height: 36px; }
  .ow-grid { grid-template-columns: minmax(0, 1fr); }
  .ow-closet-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.compact .mlw-nav { width: 38px; height: 38px; }
.compact .mlw-tab-btn { min-height: 36px; }
.compact .mlw-tab-x { width: 32px; height: 32px; }
.compact .ow-mini { min-height: 34px; padding: 4px 12px; }
.ow-closet-grid > .ow-empty, .ow-grid > .ow-empty { grid-column: 1 / -1; }
