:root{--bg:#f7f4ee;--paper:#fffcf8;--ink:#43372e;--muted:#7a6b5e;--line:#e7ddd1;--accent:#916141;--accent2:#ba8b65;--soft:#f0e5d7;--sidebar:#eee6da;--green:#56684c;--shadow:0 4px 24px #53412806;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,textarea,select{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent2);outline-offset:3px}a{color:var(--accent)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Georgia,serif;font-weight:400}h1{font-size:43px;line-height:1.15;letter-spacing:-1.2px}h2{font-size:27px;line-height:1.2}h3{font-size:21px;margin-bottom:14px}p{color:var(--muted)}.shell{display:grid;grid-template-columns:242px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--sidebar);height:100dvh;position:sticky;top:0;padding:28px 17px;overflow:auto;border-right:1px solid var(--line);scrollbar-width:thin}.brand{padding:0 12px 25px;display:flex;gap:10px;align-items:center}.brand img{width:39px;height:39px}.brand strong{font:19px/1.05 Georgia,serif;display:block}.brand small{font-size:9px;letter-spacing:3px}.nav-group{margin:18px 0}.eyebrow,.nav-group>p{font-size:9px;letter-spacing:2px;text-transform:uppercase;font-weight:650;color:var(--muted)}.nav-group>p{padding:0 13px;margin-bottom:7px}.nav{display:flex;align-items:center;gap:11px;border:0;background:none;width:100%;text-align:left;border-radius:8px;padding:8px 13px;color:var(--muted);font-size:12px}.nav i{font:17px Georgia;width:19px;text-align:center}.nav.active{background:var(--paper);color:var(--accent);box-shadow:0 2px 6px #48332007}.nav:hover{background:var(--soft)}.side-note{font-size:10px;padding:16px 12px;color:var(--muted);border-top:1px solid var(--line)}.main{min-width:0}.topbar{height:71px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:16px;background:var(--paper)}.breadcrumb{font-size:11px;color:var(--muted)}.top-actions{display:flex;gap:10px;align-items:center}.top-actions select{border:0;background:transparent;font-size:11px;max-width:112px}.status{font-size:10px;color:var(--green)}.status:before{content:'●';font-size:8px;margin-right:6px}.content{max-width:1500px;margin:auto;padding:34px 36px 60px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.page-head h1{font-size:37px;margin:6px 0 7px}.page-head p{margin:0;max-width:670px;font-size:12px}.button,.icon-button{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:10px 15px;font-size:12px;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;gap:7px;white-space:nowrap}.button.primary{background:var(--accent);color:white;border-color:var(--accent)}.button.subtle{background:transparent}.button.danger{color:#9e3b3b}.icon-button{padding:6px 10px;min-width:34px}.actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.hero{display:grid;grid-template-columns:1.2fr 1fr;min-height:320px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--soft);margin-bottom:25px}.hero-copy{padding:32px 35px;align-self:center}.hero h1{max-width:450px;margin:12px 0 15px}.hero p{font-size:12px;max-width:355px}.hero-photo{position:relative;min-height:300px}.hero-photo>img{width:100%;height:100%;object-fit:cover;position:absolute}.hero-photo .photo-change{position:absolute;bottom:15px;right:15px;background:#fffdf8ed}.grid{display:grid;gap:18px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin:22px 0}.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:23px;box-shadow:var(--shadow);min-width:0}.stat .label{font-size:10px;color:var(--muted)}.stat .value{font:31px Georgia;margin:9px 0 5px;color:var(--ink);overflow-wrap:anywhere}.stat small{font-size:10px;color:var(--muted)}.progress{height:5px;background:var(--soft);border-radius:10px;overflow:hidden;margin-top:14px}.progress span{display:block;height:100%;background:var(--accent2);transition:width .5s}.cols{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);margin-top:20px}.equal{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:20px}.thirds{grid-template-columns:repeat(3,minmax(0,1fr))}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}.card-head h3{margin:0}.card-head a,.card-head button{font-size:11px}.row{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:14px 0}.row:last-child{padding-bottom:0}.row .grow{flex:1;min-width:0}.row strong{font-size:12px;font-weight:550}.row small{display:block;color:var(--muted);font-size:10px}.date-box{width:42px;min-height:43px;background:var(--soft);text-align:center;border-radius:8px;font:20px Georgia;padding:5px;flex-shrink:0}.date-box small{font:8px system-ui;text-transform:uppercase}.pill{font-size:9px;padding:4px 9px;border-radius:20px;background:var(--soft);display:inline-block}.pill.completed,.pill.purchased,.pill.gifted{background:#e5ecdf;color:#4b6346}.muted{color:var(--muted);font-size:12px}.ring-wrap{display:flex;align-items:center;gap:24px}.ring{width:125px;height:125px;border-radius:50%;background:conic-gradient(var(--accent2) calc(var(--pct)*1%),var(--soft) 0);display:grid;place-items:center;flex-shrink:0}.ring>div{background:var(--paper);width:101px;height:101px;border-radius:50%;display:grid;place-content:center;text-align:center}.ring b{font:27px Georgia}.ring small{font-size:8px;color:var(--muted)}.thumb{width:52px;height:52px;object-fit:cover;border-radius:8px;background:var(--soft)}.footer{text-align:center;margin:32px 0 0;font:italic 14px Georgia;color:var(--muted)}.empty{padding:32px 10px;text-align:center;color:var(--muted);font-size:12px}.empty-symbol{font:34px Georgia;color:var(--accent2);margin-bottom:10px}.notice{padding:12px 16px;border-radius:8px;background:var(--soft);font-size:11px;color:var(--muted);margin:15px 0}.notice.demo{display:flex;justify-content:space-between;align-items:center;border:1px dashed var(--accent2)}.toolbar{display:flex;gap:12px;margin:20px 0;align-items:center}.toolbar input{flex:1;max-width:380px}.input,input:not([type=checkbox]):not([type=file]),select,textarea{border:1px solid var(--line);background:var(--paper);border-radius:7px;padding:10px 11px;min-width:0}.table-wrap{overflow:auto;padding:0}table{width:100%;border-collapse:collapse;font-size:12px}th{background:var(--soft);text-align:left;font-size:10px;color:var(--muted);font-weight:550;padding:13px 17px;white-space:nowrap}td{padding:14px 17px;border-top:1px solid var(--line);max-width:280px;overflow-wrap:anywhere;vertical-align:top}td .actions{flex-wrap:nowrap}input[type=checkbox]{accent-color:var(--accent);width:17px;height:17px;cursor:pointer}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.photo-card{padding:0;overflow:hidden}.photo-card .photo{height:210px;width:100%;object-fit:cover;background:var(--soft)}.photo-placeholder{height:160px;display:grid;place-items:center;background:var(--soft);font:48px Georgia;color:var(--accent2)}.photo-body{padding:19px}.photo-body h3{font-size:22px;margin:7px 0}.photo-body p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.sticker-inline{font-size:25px;margin:8px 0;display:flex;gap:8px;flex-wrap:wrap}.sticker-inline img{width:40px;height:40px}.chart{width:100%;height:180px;overflow:visible}.chart text{font:10px system-ui;fill:var(--muted)}.chart line{stroke:var(--line)}.chart polyline{fill:none;stroke:var(--accent2);stroke-width:2.8}.chart circle,.chart rect{fill:var(--accent2)}.chart-table{font-size:10px;color:var(--muted);margin-top:6px}.chart-table summary{cursor:pointer}.chart-table table{font-size:10px}.chart-table th,.chart-table td{padding:6px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekday{text-align:center;font-size:10px;padding:7px;color:var(--muted)}.day{min-height:105px;border:1px solid var(--line);background:var(--paper);border-radius:7px;padding:8px;min-width:0}.day.today{border-color:var(--accent)}.day.outside{opacity:.4}.day>b{font-size:11px}.event{display:block;width:100%;border:0;text-align:left;background:var(--soft);border-radius:4px;padding:3px 5px;font-size:9px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:13px}.week-card{padding:18px;text-align:left;border:1px solid var(--line);background:var(--paper);border-radius:10px}.week-card.current{border:1px solid var(--accent);background:var(--soft)}.week-card strong{display:block;font:30px Georgia;margin:5px 0}.week-card small{display:block;font-size:9px;color:var(--muted)}.fields{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:11px;color:var(--muted)}.field.wide{grid-column:1/-1}.field input,.field select,.field textarea{width:100%;color:var(--ink);font-size:13px}.field textarea{min-height:110px;resize:vertical}.field small{font-size:10px}.field.check{flex-direction:row;align-items:center}.form-actions{margin-top:23px;display:flex;justify-content:flex-end;gap:8px}.form-preview{height:150px;max-width:100%;object-fit:cover;border-radius:8px;margin:7px 0}.swatches{display:flex;gap:10px;flex-wrap:wrap}.theme{border:1px solid var(--line);padding:10px;background:var(--paper);border-radius:9px;flex:1;min-width:110px;text-align:left;font-size:11px}.theme.selected{outline:2px solid var(--accent)}.theme span{display:block;height:35px;border-radius:6px;margin-bottom:8px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid>.card{align-self:start}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0;font-size:11px}.check-grid label{display:flex;align-items:center;gap:6px}dialog{width:min(760px,94vw);max-height:90dvh;border:1px solid var(--line);border-radius:15px;padding:26px;background:var(--paper);color:var(--ink);box-shadow:0 20px 100px #38241240}dialog::backdrop{background:#30241c60;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:15px}.dialog-head h2{margin:0}.sticker-board{display:flex;gap:7px;flex-wrap:wrap;padding:10px 0}.sticker{border:1px solid var(--line);border-radius:8px;min-width:40px;min-height:40px;background:var(--soft);font-size:22px;display:grid;place-items:center}.sticker img{height:32px;width:32px}.sticker.selected{outline:2px solid var(--accent)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:12px 22px;background:var(--ink);color:white;border-radius:10px;z-index:100;font-size:12px;display:none;max-width:90vw}.menu-button{display:none}.loading{padding:45px}#printBook{display:none}.floating{animation:float 5s ease-in-out infinite}.no-motion .floating{animation:none}.timer{font:50px Georgia;font-variant-numeric:tabular-nums;margin:14px 0}@keyframes float{50%{transform:translateY(-5px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(min-width:1600px){.hero{min-height:370px}.hero-copy{padding:40px}.hero h1{font-size:52px}}@media(max-width:1150px){.shell{grid-template-columns:205px minmax(0,1fr)}.content{padding:26px 22px}.topbar{padding:0 22px}.hero h1{font-size:36px}.hero-copy{padding:24px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ring-wrap{gap:12px}.ring{width:105px;height:105px}.ring>div{width:85px;height:85px}}@media(max-width:800px){.shell{display:block}.sidebar{display:none;position:fixed;width:255px;z-index:30;box-shadow:0 0 0 100vmax #30241c60}.sidebar.open{display:block}.menu-button{display:inline-flex}.topbar{height:auto;min-height:64px;padding:12px 16px;gap:8px;position:sticky;top:0;z-index:15}.breadcrumb{display:none}.top-actions{gap:5px}.top-actions select{max-width:95px;font-size:10px;padding:7px}.status{font-size:9px}.content{padding:23px 16px 50px}.hero{grid-template-columns:1fr;min-height:0}.hero-photo{min-height:200px;grid-row:1}.hero-copy{padding:24px}.hero h1{font-size:36px;max-width:100%}.cols,.equal,.settings-grid,.thirds{grid-template-columns:1fr}.page-head{align-items:flex-start}.page-head h1{font-size:30px}.page-head .button{font-size:10px;padding:9px}.card{padding:18px}.table-wrap{padding:0}.fields{grid-template-columns:1fr}.field.wide{grid-column:auto}.photo-grid{grid-template-columns:1fr 1fr}.photo-card{padding:0}.photo-card .photo{height:165px}.week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar{gap:3px}.day{min-height:78px;padding:4px}.event{font-size:8px;padding:2px}.chart{height:175px}.check-grid{grid-template-columns:1fr}.top-actions .status{max-width:75px}.footer{font-size:12px}.stat .value{font-size:27px}.notice.demo{display:block}}@media(max-width:430px){.photo-grid{grid-template-columns:1fr}.stats{gap:10px}.stats .card{padding:15px}.hero-photo{min-height:175px}.top-actions select{max-width:86px}.topbar{padding:9px}.week-card{padding:12px}.page-head{flex-wrap:wrap}}
@media print{@page{size:A4;margin:17mm}body{background:white;font-size:10pt;color:#222}#app,dialog,#toast,#restoreFile{display:none!important}#printBook{display:block!important}#printBook h1{font-size:32pt}#printBook h2{font-size:22pt;border-bottom:1px solid #c6b5a3;padding-bottom:8px}#printBook h3{font-size:14pt}#printBook section{break-before:page}#printBook .print-entry{break-inside:avoid;border-bottom:1px solid #ddd;padding:10px 0}#printBook p{white-space:pre-wrap;overflow-wrap:anywhere;color:#333}#printBook dl{display:grid;grid-template-columns:32% 68%;margin:8px 0}#printBook dt{font-weight:bold;padding:3px 8px 3px 0}#printBook dd{margin:0;padding:3px;white-space:pre-wrap;overflow-wrap:anywhere}#printBook img{max-height:180px;max-width:100%;object-fit:contain}#printBook .sticker-inline img{width:35px;height:35px}#printBook .book-cover{height:245px;width:100%;max-height:none;object-fit:cover;margin:22px 0}#printBook .muted{font-size:9pt}#printBook a{color:#333}#printBook .print-chart{break-inside:avoid}.no-print{display:none!important}}
