.app{min-height:100dvh}.content{max-width:640px;padding:max(14px, env(safe-area-inset-top)) 16px calc(90px + env(safe-area-inset-bottom));margin:0 auto}.screen h1{margin:8px 0 14px;font-size:26px}.screen h3{margin:0 0 10px;font-size:17px}.muted{color:var(--muted)}.small{font-size:13px}.tabbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20;background:#fffffff5;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0 6px;font-size:11px;display:flex}.tabbar button span{filter:grayscale();opacity:.6;font-size:22px}.tabbar button.on{color:var(--orange-d);font-weight:700}.tabbar button.on span{filter:none;opacity:1}.card{background:var(--paper);border-radius:18px;margin-bottom:14px;padding:16px;box-shadow:0 2px 8px #2b23400d}.card.notice{background:var(--soft-yellow)}.btn{background:var(--bg);min-height:46px;color:var(--ink);border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-size:16px;font-weight:700;text-decoration:none;display:inline-flex}.btn.small{border-radius:10px;min-height:34px;padding:0 12px;font-size:14px}.btn.wide{width:100%;margin-top:8px}.btn.primary{background:var(--orange);color:#fff}.btn.danger{color:var(--red-d)}.input{border:1.5px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;min-height:46px;margin-bottom:8px;padding:10px 12px;font-size:16px}textarea.input{resize:vertical;line-height:1.5}.input:focus{border-color:var(--blue)}.link{color:var(--blue-d);margin:0 4px;font-weight:700;text-decoration:underline}.row-between{justify-content:space-between;align-items:center;gap:10px;padding:6px 0;display:flex}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{background:var(--bg);border-radius:999px;align-items:baseline;gap:4px;padding:6px 10px;font-size:14px;display:inline-flex}.chip small{color:var(--muted)}.chip.flagged{background:var(--soft-red)}.ok-box{background:var(--soft-green);color:var(--green-d);border-radius:14px;margin-bottom:12px;padding:12px 16px}.credit{color:var(--muted);text-align:center;font-size:12px;line-height:1.6}.credit a{color:var(--blue-d)}.login{text-align:center;max-width:380px;margin:12vh auto 0;padding:0 20px}.login-emoji{font-size:64px}.week-nav{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.week-nav h1{text-align:center;margin:0;font-size:18px}.week-name{color:var(--orange-d)}.week-nav button{background:var(--paper);border-radius:50%;width:40px;height:40px;font-size:22px;box-shadow:0 2px 8px #2b23400f}.card-title{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.card-title h3{margin:0}.tag{background:var(--soft-blue);color:var(--blue-d);border-radius:999px;padding:3px 8px;font-size:12px;font-weight:700}.illus{flex:none}.fake-input{text-align:left;background:#fffcf7;border:1.5px dashed #e8d6bd;border-radius:14px;width:100%;min-height:92px;padding:12px 14px;font-size:14px;line-height:1.6;display:block}.fake-placeholder{color:#b5aabf}.fake-draft{color:var(--ink)}.add-card .btn.wide{margin-top:12px;box-shadow:0 6px 14px #ff8a3d4d}.add-tip{margin:10px 2px 0}.empty-card{align-items:center;gap:14px;display:flex}.empty-card b{font-size:15px}.empty-card p{margin:6px 0 0}.summary-bar{background:var(--soft-orange);border-radius:14px;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:14px;padding:10px 14px;font-size:14px;display:flex}.summary-line{flex-wrap:wrap;flex:1;align-items:center;gap:6px 8px;display:flex}.summary-line>span:first-child{margin-right:auto}.legend-chip{border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}.legend-chip.green,.badge-green{background:var(--soft-green);color:var(--green-d)}.legend-chip.yellow,.badge-yellow{background:var(--soft-yellow);color:var(--yellow-d)}.reorder-btn{border:1.5px solid var(--orange);background:var(--paper);color:var(--orange-d);border-radius:999px;padding:7px 14px;font-size:15px;font-weight:800}.reorder-btn.on{background:var(--orange);color:#fff}.btn.add-more{border:1.5px dashed var(--orange);background:var(--paper);width:100%;color:var(--orange-d);flex-wrap:wrap;margin-bottom:14px}.add-more-draft{background:var(--soft-orange);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}.group{margin-bottom:8px}.group-head{align-items:baseline;gap:8px;margin:0 2px 8px;display:flex}.group-head h3{margin:0}.entry{background:var(--paper);border-left:5px solid var(--orange);border-radius:16px;margin-bottom:10px;padding:12px 12px 10px 14px;box-shadow:0 2px 8px #2b23400d}.entry.tier-extra{border-left-color:#d6cfe0}.entry.has-problem{outline:2px solid var(--red)}.entry.tappable{cursor:pointer;transition:transform 80ms}.entry.tappable:active{background:#fffaf3;transform:scale(.985)}.entry-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.entry-title{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}.entry-text{font-size:20px}.badge{white-space:nowrap;border-radius:6px;padding:2px 7px;font-size:12px;font-weight:700}.entry-tools{flex:none;align-items:center;gap:4px;display:flex}.entry-tools button{background:var(--bg);min-width:34px;height:34px;color:var(--muted);border-radius:10px}.origin-tag{border-radius:999px;flex:none;padding:4px 10px;font-size:13px;font-weight:700}.origin-tag.class{background:var(--soft-blue);color:var(--blue-d)}.origin-tag.outside{color:#6a4fd8;background:#f1ecff}.entry-summary{color:#5d5470;text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:14px;overflow:hidden}.entry-meta{justify-content:space-between;align-items:center;gap:8px;margin-top:6px;font-size:12px;display:flex}.entry-chevron{color:#c4bccf;flex:none;font-size:22px;line-height:1}.senses{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.sense{background:var(--bg);text-align:left;border:1.5px solid #0000;border-radius:12px;padding:8px 12px;font-size:14px}.sense i{color:var(--muted)}.sense.on{background:var(--soft-blue);border-color:var(--blue);color:var(--blue-d)}.hint{color:var(--muted);margin:6px 0;font-size:13px}.warn{color:var(--red-d);font-size:13px}.carried-card h3{font-size:15px}.plan-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.plan-cell{background:#fbf7f1;border-radius:12px;align-items:baseline;gap:8px;min-width:0;padding:8px 10px;font-size:14px;display:flex}.plan-cell.test{background:var(--soft-blue)}.plan-cell.sunday{background:var(--soft-green)}.plan-day{color:var(--muted);flex:none;font-size:12px;font-weight:700}.plan-words{overflow-wrap:anywhere;min-width:0}.plan-note{margin:10px 2px 0}.save-bar{bottom:calc(64px + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 25%);padding:8px 0 4px;position:sticky}.save-bar .btn.wide{box-shadow:0 6px 14px #ff8a3d4d}.save-bar .btn.attention{background:var(--soft-red);color:var(--red-d);box-shadow:none}.save-note{text-align:center;color:var(--green-d);margin:6px 0 0;font-size:12px}.test-card{background:var(--soft-blue)}.sheet-backdrop{z-index:50;background:#2b234059;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:640px;height:calc(100dvh - max(16px, env(safe-area-inset-top)));background:var(--paper);padding:10px 14px env(safe-area-inset-bottom);border-radius:20px 20px 0 0;flex-direction:column;margin:0 auto;animation:.22s ease-out sheet-up;display:flex}@keyframes sheet-up{0%{opacity:0;transform:translateY(40px)}}.sheet-bar{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding-bottom:10px;display:flex}.sheet-cancel{color:var(--muted);padding:6px 4px;font-size:16px}.sheet-title{flex-direction:column;flex:1;align-items:center;min-width:0;display:flex}.sheet-title span{color:var(--muted);font-size:12px}.sheet-input{resize:none;background:0 0;border:0;outline:none;flex:1;width:100%;padding:12px 2px;font-size:18px;line-height:1.7}.sheet-tabs{margin-top:10px;display:flex}.sheet-tabs button{flex:1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.tab-count{background:var(--orange);color:#fff;border-radius:999px;min-width:20px;padding:0 6px;font-size:12px;line-height:20px}.sheet-spacer{width:64px}.sheet.detail{height:auto;max-height:calc(100dvh - max(24px, env(safe-area-inset-top)))}.detail-body{-webkit-overflow-scrolling:touch;padding:14px 2px 16px;overflow-y:auto}.detail-hero{align-items:center;gap:14px;display:flex}.detail-thumb{background:#fbf7f1;border-radius:16px;flex:none;justify-content:center;align-items:center;width:112px;height:112px;display:flex;overflow:hidden}.detail-thumb img{object-fit:contain;width:100%;height:100%}.detail-thumb-empty{flex-direction:column;align-items:center;gap:4px;font-size:30px;display:flex}.detail-thumb-empty small{color:var(--muted);font-size:12px}.detail-word{flex-direction:column;align-items:flex-start;gap:6px;min-width:0;display:flex}.detail-text{overflow-wrap:anywhere;font-size:26px}.detail-sub{align-items:center;gap:8px;font-size:15px;display:flex}.sound-btn{background:var(--soft-orange);border-radius:50%;width:38px;height:38px;font-size:18px}.detail-status{margin:10px 2px 0}.detail-section{margin-top:18px}.detail-section h4{margin:0 0 8px;font-size:15px}.detail-section h4 small{color:var(--muted);margin-left:8px;font-size:12px;font-weight:400}.detail-section .seg{display:flex}.detail-section .seg button{flex:1}.detail-remove{background:var(--soft-red);margin-top:24px}.sheet-error{background:var(--soft-red);color:var(--red-d);border-radius:10px;margin-bottom:8px;padding:8px 10px;font-size:14px}.stats{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;display:grid}.stat{background:var(--paper);border-radius:16px;padding:14px}.stat b{font-size:26px;display:block}.stat span{color:var(--muted);font-size:13px}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:left;border-bottom:1px solid var(--bg);padding:8px 4px}.table th{color:var(--muted);font-size:12px;font-weight:600}.table tr.s-missed td{color:var(--red-d)}.week-words td{vertical-align:middle}.week-words .origin-tag{padding:2px 8px;font-size:12px}.chip-origin{font-weight:700}.chip-origin.class{color:var(--blue-d)!important}.chip-origin.outside{color:#6a4fd8!important}.test-row{border-bottom:1px solid var(--bg);padding:6px 0}.family-pending{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;display:grid}.family-pending .card{flex-direction:column;justify-content:space-between;margin-bottom:0;display:flex}.family-card.has-pending{background:var(--soft-yellow)}.family-head{align-items:center;gap:10px;display:flex}.family-emoji{font-size:34px}.family-count{font-size:30px;line-height:1.1;display:block}.family-count small{color:var(--muted);font-size:15px}.family-card .btn{min-height:42px;padding:0 10px;font-size:14px}.btn:disabled{opacity:.45}.family-records{margin:0;padding:0;list-style:none}.family-records li{border-bottom:1px solid var(--bg);align-items:center;gap:10px;padding:9px 0;display:flex}.family-record-emoji{font-size:20px}.family-record-main{flex-direction:column;flex:1;min-width:0;display:flex}.family-status{border-radius:999px;flex:none;padding:3px 10px;font-size:13px;font-weight:700}.family-status.pending{background:var(--soft-orange);color:var(--orange-d)}.family-status.issued{background:var(--soft-green);color:var(--green-d)}.family-status.missed{background:var(--bg);color:var(--muted)}.field{margin-bottom:12px;display:block}.field>span{color:var(--muted);margin-bottom:6px;font-size:14px;display:block}.seg{background:var(--bg);border-radius:12px;gap:3px;padding:3px;display:inline-flex}.seg button{color:var(--muted);border-radius:10px;padding:8px 16px;font-weight:700}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 4px #00000014}.pair-code{flex-direction:column;align-items:center;padding:10px;display:flex}.pair-code b{letter-spacing:.2em;color:var(--orange-d);font-size:44px}.number-field .input-suffix{align-items:center;gap:8px;display:flex}.number-field .input-suffix .input{max-width:140px;margin-bottom:0}.number-field .input-suffix i{color:var(--muted);font-style:normal}.field-note{color:var(--muted);margin-top:2px;font-size:12px;font-style:normal;display:block}.price-group{border-top:1px solid var(--bg);margin:16px 0 8px;padding-top:12px;font-size:14px}.rules{margin:4px 0 10px;padding-left:18px;line-height:1.6}
