:root{--bg: #f4f5f4;--card: #ffffff;--card-alt: #f1f3f2;--ink: #23272b;--muted: #6b7177;--faint: #9aa0a6;--line: #e7e9ea;--line-soft: #eef0f0;--teal: #3f9d8f;--teal-dark: #348476;--teal-tint: #eaf4f2;--teal-ring: rgba(63, 157, 143, .32);--orange: #c2683f;--blue: #4a7fb5;--rec: #d2453d;--rec-dark: #b23a33;--rec-tint: #fdeceb;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(20, 24, 28, .05), 0 1px 3px rgba(20, 24, 28, .04);--shadow-md: 0 2px 6px rgba(20, 24, 28, .06), 0 10px 24px rgba(20, 24, 28, .07);--shadow: var(--shadow-sm);--text-xs: 12px;--text-sm: 13.5px;--text-base: 15px;--text-md: 17px;--text-lg: 22px;--focus: 0 0 0 3px var(--teal-ring)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit;cursor:pointer}a{color:inherit;text-decoration:none}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-sm)}.app{min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-6);background:var(--card);border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:var(--space-3);font-weight:700;font-size:18px;letter-spacing:-.2px;color:var(--ink);transition:opacity .15s ease}.brand:hover{opacity:.78}.brand-logo{height:40px;width:auto;display:block}.brand-accent{color:var(--teal-dark)}.content{max-width:860px;margin:0 auto;padding:var(--space-6) var(--space-6) 60px}.content-wide{max-width:1180px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 16px;font-weight:600;font-size:var(--text-base);line-height:1.1;background:var(--card-alt);color:var(--ink);transition:background .15s ease,transform .08s ease,box-shadow .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}.btn:hover{background:#e7eae9;border-color:#d7dbda;transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(0);box-shadow:none}.btn:focus-visible{box-shadow:var(--focus)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.btn-sm{padding:7px 12px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn-primary:hover{background:var(--teal-dark);border-color:var(--teal-dark);box-shadow:0 4px 14px var(--teal-ring)}.btn-primary:disabled{background:var(--teal);border-color:var(--teal)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--muted)}.btn-ghost:hover{background:var(--card);border-color:#c6cace;color:var(--ink)}.link-btn{background:none;border:none;padding:6px;border-radius:var(--radius-sm);color:var(--muted);font-size:var(--text-sm);font-weight:600;transition:color .15s ease,background .15s ease}.link-btn:hover{color:var(--ink);background:var(--card-alt)}.link-btn:focus-visible{box-shadow:var(--focus)}.danger{color:var(--rec)}.link-btn.danger:hover{color:var(--rec-dark);background:var(--rec-tint)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5);margin-bottom:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3)}.spread{justify-content:space-between}.muted{color:var(--muted);font-size:var(--text-sm)}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.page-head h1{font-size:var(--text-lg);letter-spacing:-.3px;margin:0}.search-bar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.search-bar input{flex:1;border:1px solid var(--line);border-radius:var(--radius-pill);padding:10px 18px;font:inherit;font-size:16px;background:var(--card);transition:border-color .15s ease,box-shadow .15s ease}.search-bar input:focus{outline:none;border-color:var(--teal);box-shadow:var(--focus)}.day-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:10px 14px;margin-bottom:var(--space-4);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.day-nav .day-label{text-align:center;min-width:0}.day-title{font-weight:650;font-size:var(--text-md);letter-spacing:-.2px;color:var(--ink)}.day-count{font-size:var(--text-xs);color:var(--muted);margin-top:1px}.day-nav .btn{flex:0 0 auto}.visit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-4)}.visit-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);cursor:pointer;transition:border-color .15s ease,box-shadow .18s ease,transform .12s ease}.visit-card:hover{border-color:var(--line);box-shadow:var(--shadow-md);transform:translateY(-2px)}.visit-card:focus-visible{outline:none;box-shadow:var(--focus)}.visit-card-photo{aspect-ratio:4 / 3;background:var(--card-alt) center / cover no-repeat;display:grid;place-items:center;color:var(--faint);border-bottom:1px solid var(--line-soft)}.visit-card-body{padding:12px 14px 4px}.visit-card-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:4px}.visit-card-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:4px 8px 6px;margin-top:auto}.visit-card-actions .visit-meta{padding-left:6px}.card.new-visit{max-width:460px}.visit-name{font-weight:650;font-size:var(--text-md);letter-spacing:-.2px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visit-meta{color:var(--faint);font-size:var(--text-sm);margin-top:1px}.avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;background:var(--card-alt) center / cover no-repeat;flex:0 0 48px;display:grid;place-items:center;color:var(--faint);font-size:20px;box-shadow:inset 0 0 0 1px #14181c0f,0 0 0 3px var(--card),0 0 0 4px var(--line-soft)}.grow{flex:1;min-width:0}.badge{font-size:var(--text-xs);font-weight:600;letter-spacing:.2px;padding:4px 10px;border-radius:var(--radius-pill);text-transform:capitalize;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.recording{background:var(--rec-tint);color:var(--rec)}.badge.generated{background:var(--teal-tint);color:var(--teal-dark)}.badge.printed{background:#eaf1f8;color:var(--blue)}.banner-generated{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);background:var(--teal-tint);border:1px solid #cfe6e0;border-radius:var(--radius-md);padding:14px 16px;margin-bottom:var(--space-4)}.record-hero{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) 0 var(--space-2)}.record-btn{width:116px;height:116px;border-radius:50%;border:none;background:var(--rec);color:#fff;font-size:16px;font-weight:700;box-shadow:0 8px 24px #d2453d59;display:grid;place-items:center;transition:transform .1s ease,background .15s ease}.record-btn:hover{background:var(--rec-dark);transform:translateY(-1px)}.record-btn:active{transform:translateY(0)}.record-btn:focus-visible{box-shadow:0 8px 24px #d2453d59,0 0 0 4px #d2453d4d}.record-btn.recording{background:var(--rec-dark);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #d2453d73}50%{box-shadow:0 0 0 16px #d2453d00}}@media (prefers-reduced-motion: reduce){.record-btn.recording{animation:none}}.timer{font-variant-numeric:tabular-nums;font-size:18px;font-weight:600;color:var(--ink)}.live-box{width:100%;min-height:90px;background:var(--card-alt);border-radius:var(--radius-md);padding:14px 16px;margin-top:var(--space-1);white-space:pre-wrap}.interim{color:var(--muted)}.chunk{border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;margin-bottom:var(--space-3);background:var(--card);box-shadow:var(--shadow-sm)}.chunk-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.chunk textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font:inherit;resize:vertical;min-height:70px;transition:border-color .15s ease,box-shadow .15s ease}.chunk textarea:focus{outline:none;border-color:var(--teal);box-shadow:var(--focus)}.photos-card .photos-title{font-size:var(--text-md);margin:0}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--space-3)}.photo-tile{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card-alt);padding:var(--space-2);display:flex;flex-direction:column;gap:6px;transition:opacity .15s ease}.photo-tile.excluded{opacity:.55}.photo-tile img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-sm);display:block}.photo-include{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);font-weight:600;cursor:pointer}.photo-include input{width:16px;height:16px;accent-color:var(--teal);cursor:pointer}.photo-caption{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 8px;font:inherit;font-size:var(--text-sm);background:var(--card)}.photo-caption:focus{outline:none;border-color:var(--teal);box-shadow:var(--focus)}.photo-remove{align-self:flex-start;padding:2px 4px}.field{margin-bottom:var(--space-4)}.field label{display:block;font-weight:600;font-size:var(--text-sm);color:var(--ink);margin-bottom:6px}.field input,.field textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font:inherit;background:var(--card);transition:border-color .15s ease,box-shadow .15s ease}.field input:focus,.field textarea:focus,.login-card input:focus{outline:none;border-color:var(--teal);box-shadow:var(--focus)}input[type=file]{font:inherit;font-size:var(--text-sm);color:var(--muted);max-width:100%}input[type=file]::file-selector-button{font:inherit;font-weight:600;font-size:var(--text-sm);margin-right:var(--space-3);padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card-alt);color:var(--ink);cursor:pointer;transition:background .15s ease,border-color .15s ease}input[type=file]::file-selector-button:hover{background:#e7eae9;border-color:#d7dbda}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--space-5)}.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-8) 30px;text-align:center}.login-logo{width:132px;height:auto;display:block;margin:0 auto var(--space-2)}.login-card h1{font-size:21px;color:var(--ink);margin:4px 0 2px;letter-spacing:-.3px}.login-sub{color:var(--muted);font-size:var(--text-sm);margin:0 0 var(--space-5)}.review-toggle{display:flex;align-items:flex-start;gap:var(--space-2);padding:12px 14px;margin-bottom:var(--space-4);background:var(--card-alt);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;color:var(--ink);cursor:pointer}.review-toggle input{width:17px;height:17px;margin:1px 0 0;accent-color:var(--teal);cursor:pointer;flex:0 0 auto}.review-toggle .muted{font-weight:400}.preview-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-5) var(--space-5);margin-bottom:var(--space-4)}.preview-card .sec-label{font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--line-soft)}.s-summary .sec-label{color:#6b7177}.s-key .sec-label{color:var(--orange)}.s-plan .sec-label{color:var(--teal-dark)}.s-watch .sec-label{color:#5b6470}.s-follow .sec-label{color:var(--blue)}.subhead{font-weight:700;font-size:var(--text-sm);color:var(--ink);margin:14px 0 5px}.preview-card p{margin:0 0 8px}.preview-card ul{margin:0 0 6px;padding-left:var(--space-5)}.preview-card li{margin-bottom:var(--space-1)}.editable{border-radius:5px;padding:0 2px;margin:0 -2px;transition:background .12s ease,box-shadow .12s ease}.editable:hover{background:var(--card-alt)}.editable:focus{outline:none;background:#fff;box-shadow:var(--focus)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14181c73;display:grid;place-items:center;padding:var(--space-5);z-index:100;animation:fade-in .15s ease}.modal{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6);width:100%;max-width:420px;animation:modal-pop .16s ease}.modal h2{margin:0 0 var(--space-2);font-size:var(--text-md);letter-spacing:-.2px}.modal p{margin:0 0 var(--space-5);color:var(--muted);font-size:var(--text-sm);line-height:1.55}.modal-actions{display:flex;flex-direction:column;gap:var(--space-2)}.modal-actions .btn{width:100%}.modal-actions .link-btn{margin-top:var(--space-1)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.share-url{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font:inherit;font-size:14px;color:var(--teal-dark);background:var(--card-alt);margin-bottom:var(--space-3)}.toast{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);background:#23272b;color:#fff;padding:12px 18px;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;box-shadow:var(--shadow-md);z-index:50;animation:toast-in .18s ease}.toast.error{background:var(--rec-dark)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-3px}.btn:not(.btn-primary):not(.btn-blue) .spinner,.link-btn .spinner{border-color:#23272b40;border-top-color:var(--ink)}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;color:var(--muted);padding:56px 20px}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);text-align:center;padding:56px 20px;color:var(--muted)}.empty-state .empty-icon{line-height:1;margin-bottom:var(--space-1);color:var(--faint)}.empty-state .empty-title{font-size:var(--text-md);font-weight:650;color:var(--ink)}.empty-state .empty-sub{font-size:var(--text-sm);max-width:280px}.field input,.field textarea,.chunk textarea,.login-card input{font-size:16px}@media (max-width: 560px){.content{padding:var(--space-4) var(--space-4) 64px}.topbar{padding:10px 14px}.brand{font-size:16px;gap:var(--space-2)}.brand-logo{height:34px}.page-head{flex-wrap:wrap;gap:var(--space-3)}.page-head h1{font-size:20px}.row.spread{flex-wrap:wrap;gap:var(--space-3)}.card,.preview-card{padding:var(--space-4)}.banner-generated{flex-wrap:wrap}.visit-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.visit-card-body{padding:10px 12px 2px}.photo-grid{grid-template-columns:repeat(2,1fr)}}.brand-logo.placeholder{height:40px;width:40px;display:inline-flex;align-items:center;justify-content:center;background:var(--teal-tint);border-radius:var(--radius-md);color:var(--teal-dark)}.login-logo.placeholder{width:96px;height:96px;margin:0 auto;display:flex;align-items:center;justify-content:center;background:var(--teal-tint);border-radius:50%;color:var(--teal-dark)}.demo-banner{display:flex;gap:var(--space-3);align-items:center;background:var(--teal-tint);border:1px solid var(--teal-ring);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-5);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.demo-banner:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.demo-banner-ico{color:var(--teal-dark);line-height:1;display:flex}.demo-banner-cta{color:var(--teal-dark);font-weight:700;white-space:nowrap}.settings{max-width:640px;margin:0 auto;padding-bottom:96px}.settings-head{margin-bottom:var(--space-5)}.settings-head h1{margin:0 0 var(--space-2)}.set-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.set-card h2{font-size:var(--text-md);margin:0 0 var(--space-4)}.fld{display:block;margin-bottom:var(--space-4)}.fld>span{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:var(--space-2)}.fld>span em{font-style:normal;font-weight:400;color:var(--faint)}.fld input,.fld textarea{width:100%;font:inherit;font-size:var(--text-base);padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink)}.fld input:focus,.fld textarea:focus{outline:none;box-shadow:var(--focus);border-color:var(--teal)}.fld input[type=color]{width:48px;height:34px;padding:2px;cursor:pointer}.color-row{display:inline-flex;align-items:center;gap:var(--space-3)}.color-row code{color:var(--muted)}.chk{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);cursor:pointer;font-size:var(--text-base)}.chk input{width:18px;height:18px;flex:0 0 auto}.logo-row{display:flex;align-items:center;gap:var(--space-4)}.logo-preview{height:56px;width:auto;max-width:160px;border-radius:var(--radius-sm);border:1px solid var(--line);background:#fff;object-fit:contain}.logo-preview.empty{width:90px;height:56px;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:var(--text-sm);background:var(--card-alt)}.set-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) 0;background:linear-gradient(180deg,transparent,var(--bg) 45%)}
