.dating-feedback{padding:12px 14px;border:1px solid var(--line-strong);border-radius:var(--r-md);font-size:14px;font-weight:750;line-height:1.5}.dating-feedback.is-success{color:var(--pine-deep);background:var(--pine-tint);border-color:#1f6f5b52}.dating-feedback.is-error{color:var(--err);background:var(--err-tint);border-color:color-mix(in srgb,var(--err) 32%,transparent)}.dating-calendar-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 20px;align-items:center;padding:18px 20px;border:1px solid rgba(31,111,91,.28);border-radius:var(--r-lg);background:var(--pine-tint)}.dating-calendar-copy{display:flex;align-items:flex-start;gap:12px;min-width:0}.dating-calendar-icon{display:grid;flex:0 0 40px;width:40px;height:40px;place-items:center;border-radius:var(--r-md);background:#fff;font-size:20px}.dating-calendar-copy h3{margin:0 0 4px;color:var(--pine-deep);font-size:16px;line-height:1.35;text-wrap:balance}.dating-calendar-copy p{max-width:68ch;margin:0;color:var(--ink-soft);font-size:13px;font-weight:650;line-height:1.55;text-wrap:pretty}.dating-calendar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.dating-calendar-actions a{text-decoration:none}.dating-calendar-panel>small{grid-column:1 / -1;color:var(--ink-faint);font-size:11.5px;font-weight:650;line-height:1.45}.dating-record-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.dating-record-calendar{flex:0 0 auto;color:var(--pine-deep);font-size:11.5px;font-weight:800;text-decoration:none}.dating-record-calendar:hover{text-decoration:underline;text-underline-offset:2px}.dating-record-calendar.is-disabled{color:var(--ink-faint);cursor:wait}.dating-record-delete:focus-visible{opacity:1}@media (hover: none),(pointer: coarse){.dating-record-delete{opacity:1}}@media (max-width: 720px){.dating-calendar-panel{grid-template-columns:1fr;padding:16px}.dating-calendar-actions{justify-content:flex-start}.dating-calendar-actions>*{flex:1 1 150px}}@media (max-width: 420px){.dating-record-footer{align-items:flex-start;flex-direction:column}}@media (prefers-reduced-motion: reduce){.dating-petal,.dating-card,.dating-custom-food,.dating-history,.dating-record.just-saved{animation:none}.dating-no-btn,.dating-primary-btn,.dating-food-option,.dating-record{transition-duration:.01ms}}.dating-tool-surface{display:grid;gap:16px}.dating-stage{position:relative;display:grid;min-height:520px;place-items:center;padding:clamp(1.5rem,4vw,3rem);border:1px solid var(--line);border-radius:var(--r-xl);background:radial-gradient(circle at 16% 12%,rgba(246,90,185,.12),transparent 18rem),radial-gradient(circle at 86% 78%,rgba(167,255,103,.1),transparent 20rem),var(--card);box-shadow:var(--shadow-sm);overflow:hidden}.dating-petal{position:absolute;color:#f65ab9;font-size:clamp(1.2rem,3vw,2.2rem);animation:dating-float 6s ease-in-out infinite;pointer-events:none;opacity:.5}.dating-petal-one{top:12%;left:50%}.dating-petal-two{right:18%;bottom:18%;animation-delay:-2s}.dating-petal-three{left:28%;bottom:14%;animation-delay:-4s}@keyframes dating-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-18px) rotate(12deg)}}.dating-card{position:relative;z-index:1;width:min(460px,100%);min-height:320px;padding:clamp(2rem,5vw,2.5rem);text-align:center;border:1px solid var(--line-strong);border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-md);animation:pop .42s cubic-bezier(.2,.9,.2,1) both}.dating-heading{margin:0 0 8px;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:900;letter-spacing:-.02em;line-height:1.2}.dating-subtitle{margin:0 0 18px;color:var(--ink-soft);font-size:clamp(.88rem,2vw,1rem);font-weight:700}.dating-badge{display:grid;width:72px;height:72px;margin:0 auto 18px;place-items:center;border:1px solid var(--line-strong);border-radius:18px;font-size:2rem;box-shadow:var(--shadow-sm)}.dating-badge-heart{background:#ffe4f0}.dating-badge-calendar{background:#e4f0ff}.dating-badge-food{background:#fff4e4}.dating-badge-star{background:#fffbe4}.dating-actions{position:relative;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;width:min(100%,340px);margin:28px auto 0;min-height:72px;padding:4px 0 8px}.dating-yes-btn,.dating-no-btn{position:relative;z-index:1;flex:0 0 auto;min-width:120px;height:52px;padding:0 22px;border:2px solid var(--ink);border-radius:var(--r-full);font-weight:900;font-size:15px;box-shadow:0 5px 0 var(--ink);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.dating-yes-btn{background:#ff72c8;color:#fff}.dating-yes-btn:hover{filter:brightness(1.06);box-shadow:0 4px 0 var(--ink)}.dating-yes-btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}.dating-no-btn{background:#fff;color:var(--ink);transition:left .22s cubic-bezier(.22,1,.36,1),top .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1),box-shadow .18s ease}.dating-no-btn.is-escaping{position:absolute;z-index:2;will-change:left,top,transform}.dating-primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:120px;height:48px;margin-top:22px;padding:0 24px;border:2px solid var(--ink);border-radius:var(--r-full);background:#ff72c8;color:#fff;font-weight:900;font-size:15px;box-shadow:0 5px 0 var(--ink);transition:transform .16s ease,box-shadow .16s ease}.dating-primary-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 4px 0 var(--ink)}.dating-primary-btn:disabled{opacity:.45}.dating-date-form{display:grid;gap:16px;margin-top:20px;text-align:left}.dating-date-form label{display:grid;gap:6px}.dating-date-form label span{color:var(--ink-soft);font-weight:800;font-size:13px}.dating-date-form input,.dating-date-form select{width:100%;height:48px;padding:0 14px;border:2px solid var(--line-strong);border-radius:var(--r-md);background:#fff;font:inherit;font-weight:700;color:var(--ink);transition:border-color .16s ease,box-shadow .16s ease}.dating-date-form input:focus,.dating-date-form select:focus{outline:none;border-color:#ff72c8;box-shadow:0 0 0 3px #ff72c82e}.dating-food-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.dating-food-option{display:grid;justify-items:center;gap:4px;min-height:72px;padding:10px 6px;border:2px solid var(--line);border-radius:var(--r-md);background:#fff;color:var(--ink);font-weight:800;font-size:13px;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}.dating-food-option:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.dating-food-option.selected{border-color:#ff72c8;background:#fff0f8;box-shadow:0 0 0 2px #ff72c82e}.dating-food-emoji{font-size:1.6rem}.dating-custom-food{display:flex;gap:10px;margin-top:14px;animation:pop .28s cubic-bezier(.2,.7,.2,1) both}.dating-custom-food input{flex:1;height:48px;padding:0 14px;border:2px solid var(--line-strong);border-radius:var(--r-md);background:#fff;font:inherit;font-weight:700;color:var(--ink)}.dating-custom-food input:focus{outline:none;border-color:#ff72c8;box-shadow:0 0 0 3px #ff72c82e}.dating-custom-food .dating-primary-btn{margin-top:0;min-width:80px}.dating-summary{margin:0 0 18px;color:var(--ink-soft);font-size:clamp(.92rem,2vw,1.05rem);font-weight:700;line-height:1.7}.dating-menu-card{display:grid;gap:0;margin:0 auto 8px;max-width:320px;border:2px solid var(--line-strong);border-radius:var(--r-lg);overflow:hidden}.dating-menu-row{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;font-size:14px;font-weight:700}.dating-menu-row:not(:last-child){border-bottom:1px solid var(--line)}.dating-menu-row span{color:var(--ink-soft)}.dating-menu-row strong{color:var(--ink)}.dating-answer-actions{display:flex;flex-direction:column;align-items:center;gap:8px}.dating-secondary-btn{display:inline-flex;align-items:center;justify-content:center;min-width:100px;height:40px;padding:0 18px;border:none;border-radius:var(--r-full);background:transparent;color:var(--ink-faint);font-weight:700;font-size:13px;transition:color .16s ease}.dating-secondary-btn:hover{color:var(--ink-soft)}.dating-history{margin-top:20px;padding:24px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);box-shadow:var(--shadow-sm);animation:rise .5s cubic-bezier(.2,.7,.2,1) .1s both}.dating-history-header{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:18px}.dating-history-count{color:var(--ink-faint);font-size:13px;font-weight:700}.dating-history-group{margin-bottom:16px}.dating-history-group:last-child{margin-bottom:0}.dating-group-label{margin:0 0 10px;color:var(--ink-faint);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.dating-record-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.dating-record{position:relative;display:grid;gap:8px;padding:16px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.dating-record:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.dating-record.just-saved{border-color:#ff72c8;box-shadow:0 0 0 3px #ff72c81f;animation:pop .36s cubic-bezier(.2,.9,.2,1) both}.dating-record.past{opacity:.6}.dating-record.past:hover{opacity:.85}.dating-record-top{display:flex;align-items:center;justify-content:space-between}.dating-record-status{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--r-full);font-size:11px;font-weight:800}.dating-record-status.upcoming{color:#b0448a;background:#fff0f8}.dating-record-status.past{color:var(--ink-faint);background:var(--paper-2)}.dating-record-delete{display:grid;width:24px;height:24px;place-items:center;border:none;border-radius:var(--r-full);background:transparent;color:var(--ink-faint);font-size:16px;font-weight:700;line-height:1;opacity:0;transition:opacity .16s ease,background .16s ease,color .16s ease}.dating-record:hover .dating-record-delete{opacity:1}.dating-record-delete:hover{background:var(--err-tint);color:var(--err)}.dating-record-main{display:flex;align-items:baseline;gap:8px}.dating-record-main strong{font-size:17px;font-weight:900;letter-spacing:-.01em}.dating-record-main span{color:var(--ink-soft);font-size:13px;font-weight:700}.dating-record-food{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700}.dating-record-created{color:var(--ink-faint);font-size:11px;font-weight:600}@media (max-width: 620px){.dating-tool-surface{gap:14px}.dating-stage{min-height:460px;padding:1.1rem .9rem 1.4rem}.dating-card{min-height:0;padding:1.5rem 1.15rem 1.35rem}.dating-actions{width:100%;gap:12px;min-height:64px}.dating-yes-btn,.dating-no-btn{min-width:118px;height:50px;padding:0 18px;font-size:14.5px}.dating-food-grid{grid-template-columns:repeat(3,1fr)}.dating-record-grid{grid-template-columns:1fr}}.push-toggle{font-size:.82rem}:root{--font-cjk: "HarmonyOS Sans SC", "MiSans", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--font-display: "Fraunces", Georgia, "Songti SC", "Noto Serif SC", serif;--font-body: var(--font-cjk);--paper: #f6f1e9;--paper-2: #f1ebe0;--card: #fffdf9;--card-tint: #f4efe4;--ink: #2a251d;--ink-soft: #6c6457;--ink-faint: #9c9486;--line: #e7dfd0;--line-strong: #d6cbb6;--pine: #1f6f5b;--pine-deep: #14503f;--pine-tint: #eaf2ec;--pine-tint-strong: #dcebe1;--clay: #c0613e;--clay-tint: #f6e6dd;--err: #b23a2e;--err-tint: #fbe9e5;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-full: 999px;--shadow-sm: 0 1px 2px rgba(58, 46, 28, .04), 0 2px 6px rgba(58, 46, 28, .05);--shadow-md: 0 2px 6px rgba(58, 46, 28, .05), 0 12px 28px rgba(58, 46, 28, .08);--shadow-lg: 0 6px 16px rgba(58, 46, 28, .06), 0 24px 56px rgba(58, 46, 28, .11);--ring: 0 0 0 3px rgba(31, 111, 91, .18);color:var(--ink);background:var(--paper);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:radial-gradient(1100px 720px at 90% -10%,rgba(31,111,91,.08),transparent 60%),radial-gradient(900px 640px at 2% 110%,rgba(192,97,62,.06),transparent 55%),var(--paper);background-attachment:fixed}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}:where(a,button,input,textarea):focus-visible{outline:2px solid var(--pine);outline-offset:2px}h1,h2,h3,h4,p{margin-top:0}h1{margin-bottom:0;font-size:22px;font-weight:800;letter-spacing:-.01em}h2{margin-bottom:0;font-size:clamp(24px,3vw,30px);font-weight:800;letter-spacing:-.02em;line-height:1.15}h3{margin-bottom:0;font-size:18px;font-weight:800}.eyebrow{margin:0 0 6px;font-family:var(--font-display);font-style:italic;font-weight:500;font-size:14px;letter-spacing:.01em;color:var(--clay)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.app-shell{display:grid;grid-template-columns:296px minmax(0,1fr);min-height:100vh;min-height:100dvh}.sidebar{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;gap:28px;height:100vh;height:100dvh;overflow-y:auto;padding:30px 24px;border-right:1px solid var(--line);background:var(--card);animation:rise .5s cubic-bezier(.2,.7,.2,1) both}.brand-block{display:flex;align-items:center;gap:14px}.brand-text{min-width:0}.brand-mark{display:grid;width:50px;height:50px;place-items:center;border-radius:14px;overflow:hidden;background:var(--cream, #f6f1e9);box-shadow:var(--shadow-md),inset 0 1px #ffffff2e}.brand-mark img{display:block;width:100%;height:100%;object-fit:cover}.brand-block h1{line-height:1.2}.mobile-status-dots{display:none;margin-left:auto;align-items:center}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--ink-faint)}.status-dot.is-ready{background:var(--pine);box-shadow:0 0 0 3px #1f6f5b29}.status-board{display:grid;grid-template-columns:1fr 1fr;gap:10px}.status-tile{display:flex;align-items:center;gap:10px;min-width:0;padding:12px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink-soft);background:var(--card)}.status-tile>svg{flex:none;color:var(--ink-faint)}.status-tile div{display:grid;min-width:0}.status-tile span{color:var(--ink-faint);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.status-tile strong{overflow:hidden;font-size:14px;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}.status-tile.ready{border-color:#1f6f5b47;background:var(--pine-tint)}.status-tile.ready>svg,.status-tile.ready strong{color:var(--pine-deep)}.tool-list{display:grid;gap:10px}.tool-item{display:grid;gap:6px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);text-align:left;background:var(--card);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}.tool-item:hover{transform:translateY(-1px);border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.tool-item.active{border-color:#1f6f5b66;background:var(--pine-tint);box-shadow:inset 3px 0 0 var(--pine)}.tool-item span{display:inline-flex;align-items:center;gap:8px;font-weight:800}.tool-item.active span{color:var(--pine-deep)}.tool-item small{color:var(--ink-soft);font-size:12.5px;line-height:1.5}.tool-tags{display:none}.tool-tag{flex:0 0 auto;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-full);color:var(--ink-soft);font-size:13px;font-weight:750;white-space:nowrap;background:var(--card);transition:background .14s ease,border-color .14s ease,color .14s ease}.tool-tag.active{color:var(--pine-deep);border-color:#1f6f5b5c;background:var(--pine-tint);box-shadow:inset 0 0 0 1px #1f6f5b14}.workspace{display:flex;justify-content:center;padding:clamp(28px,4vw,52px) clamp(20px,4vw,56px)}.tool-surface,.auth-panel{width:min(1140px,100%)}.auth-panel{display:grid;gap:16px;justify-items:start;width:min(380px,100%);margin:6vh auto 0;padding:32px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);box-shadow:var(--shadow-lg);animation:pop .4s cubic-bezier(.2,.7,.2,1) both}.auth-panel>svg{color:var(--pine)}.auth-panel h2{font-size:22px}.auth-panel input{width:100%;height:46px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);background:#fff;transition:border-color .16s ease,box-shadow .16s ease}.auth-panel input:focus-visible{outline:none;border-color:var(--pine);box-shadow:var(--ring)}.error-text{margin:0;color:var(--err);font-weight:700}@media (max-width: 900px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.sidebar{position:sticky;top:0;z-index:40;height:auto;gap:10px;padding:max(10px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 10px max(12px,env(safe-area-inset-left,0px));border-right:0;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:none}.brand-block{gap:10px}.brand-mark{width:36px;height:36px;border-radius:10px;box-shadow:none}.brand-block .eyebrow{display:none}.brand-block h1{font-size:16px;font-weight:800;letter-spacing:-.01em}.mobile-status-dots{display:flex}.status-board,.tool-list{display:none}.tool-tags{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 -4px;padding:2px 4px 4px}.tool-tags::-webkit-scrollbar{display:none}.tool-tag{min-height:40px;padding:0 16px;font-size:14px}.workspace{padding:14px max(12px,env(safe-area-inset-right,0px)) max(28px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}.auth-panel{width:min(100%,380px);margin:8vh auto 0;padding:24px 20px}}@media (max-width: 420px){.tool-tags{gap:6px}.tool-tag{flex:1 1 0;min-width:0;padding:0 10px;text-align:center;font-size:13px}}.primary-button,.secondary-button,.ghost-button,.auth-panel button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid transparent;border-radius:var(--r-md);font-weight:800;font-size:14.5px;white-space:nowrap;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease}.primary-button,.auth-panel button{color:#fff;background:linear-gradient(150deg,var(--pine),var(--pine-deep));box-shadow:var(--shadow-md)}.primary-button:not(:disabled):hover,.auth-panel button:not(:disabled):hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}.secondary-button{color:var(--pine-deep);background:var(--pine-tint);border-color:#1f6f5b47}.secondary-button:not(:disabled):hover{background:var(--pine-tint-strong)}.ghost-button{color:var(--ink);background:var(--card);border-color:var(--line-strong)}.ghost-button:not(:disabled):hover{transform:translateY(-1px);border-color:var(--ink-faint);box-shadow:var(--shadow-sm)}.tool-surface>*{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}.tool-surface>*:nth-child(2){animation-delay:.05s}.tool-surface>*:nth-child(3){animation-delay:.1s}.tool-surface>*:nth-child(4){animation-delay:.15s}.tool-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px;padding:26px 28px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);box-shadow:var(--shadow-md)}.tool-title-block{display:grid;align-content:center;gap:12px}.header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.workflow-track{display:flex;flex-wrap:wrap;gap:8px}.step-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--line);border-radius:var(--r-full);color:var(--ink-faint);background:var(--card);font-size:13px;font-weight:700}.step-badge svg{color:var(--pine)}.step-badge.done{color:var(--pine-deep);border-color:#1f6f5b47;background:var(--pine-tint)}.step-dot{width:7px;height:7px;border-radius:var(--r-full);background:var(--line-strong)}.prep-panel{margin-bottom:20px;padding:24px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);box-shadow:var(--shadow-sm)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:18px}.section-heading span{color:var(--ink-soft);font-size:13px;font-weight:700}.input-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 150px;gap:16px}.upload-field,.week-field,.class-level-field{display:grid;gap:12px;min-height:132px;padding:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.upload-field{position:relative}.upload-field:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.upload-field.filled{border-color:#1f6f5b52;background:linear-gradient(180deg,var(--pine-tint),var(--card))}.upload-picker{display:grid;gap:10px;min-width:0;cursor:pointer}.upload-picker>span,.week-field>span,.class-level-field>span{display:inline-flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:13px;font-weight:700}.upload-picker>span svg,.week-field>span svg,.class-level-field>span svg{color:var(--pine)}.upload-picker input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.upload-picker strong{display:flex;align-items:center;overflow:hidden;min-height:26px;color:var(--ink);font-size:16px;text-overflow:ellipsis;white-space:nowrap;z-index:1}.upload-picker small{color:var(--ink-faint);font-size:12px;font-weight:600;z-index:1}.template-download-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;width:fit-content;min-height:32px;padding:0 12px;border:1px solid rgba(31,111,91,.26);border-radius:var(--r-full);color:var(--pine-deep);background:var(--card);font-size:12.5px;font-weight:700;z-index:3;transition:background .16s ease,border-color .16s ease}.template-download-button:not(:disabled):hover{border-color:#1f6f5b70;background:var(--pine-tint)}.file-check{position:absolute;right:18px;bottom:18px;color:var(--pine);z-index:1}.week-field input,textarea{width:100%;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);background:#fff;transition:border-color .16s ease,box-shadow .16s ease}.week-field input{height:54px;padding:0 14px;font-family:var(--font-display);font-size:22px;font-weight:700}.week-field input:focus-visible,textarea:focus-visible{outline:none;border-color:var(--pine);box-shadow:var(--ring)}.daily-input-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 150px minmax(230px,.9fr)}.class-plan-input-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.class-level-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.class-level-options button{display:grid;justify-items:center;gap:3px;min-width:0;min-height:54px;padding:7px 6px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink-soft);background:#fff;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.class-level-options button:not(:disabled):hover{border-color:#1f6f5b57;background:var(--pine-tint)}.class-level-options button.selected{color:var(--pine-deep);border-color:#1f6f5b6b;background:var(--pine-tint-strong);box-shadow:var(--shadow-sm)}.class-level-options strong{overflow-wrap:anywhere;font-size:14px;font-weight:800}.class-level-options small{overflow-wrap:anywhere;color:var(--ink-faint);font-size:11px;font-weight:700}.message{display:flex;align-items:center;gap:9px;margin-bottom:20px;padding:13px 16px;border:1px solid transparent;border-radius:var(--r-md);font-size:14px;font-weight:700}.message.good{color:var(--pine-deep);border-color:#1f6f5b38;background:var(--pine-tint)}.message.bad{color:var(--err);border-color:#b23a2e38;background:var(--err-tint)}.review-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#2a251d57;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50;animation:fade .2s ease both}.review-dialog{display:grid;justify-items:center;gap:12px;width:min(440px,100%);padding:32px;border:1px solid var(--line);border-radius:var(--r-xl);color:var(--ink);text-align:center;background:var(--card);box-shadow:var(--shadow-lg);animation:pop .28s cubic-bezier(.2,.7,.2,1) both}.review-dialog h3,.review-dialog p{margin:0}.review-dialog p:not(.eyebrow){color:var(--ink-soft)}.review-spinner{display:grid;width:64px;height:64px;place-items:center;border-radius:var(--r-full);color:var(--pine);background:var(--pine-tint);border:1px solid rgba(31,111,91,.18)}.review-steps{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px}.review-steps span{padding:6px 11px;border:1px solid rgba(31,111,91,.2);border-radius:var(--r-full);color:var(--pine-deep);background:var(--pine-tint);font-size:12px;font-weight:700}textarea{min-height:160px;padding:14px;line-height:1.7;resize:vertical}@media (max-width: 900px){.tool-surface>*{animation:none}.tool-hero{display:grid;gap:14px;margin-bottom:14px;padding:14px 16px;border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.tool-title-block{gap:8px}.tool-hero .eyebrow{display:none}.tool-hero h2{font-size:20px;line-height:1.25}.workflow-track{gap:6px}.step-badge{padding:5px 10px;font-size:12px}.header-actions{width:100%;gap:8px}.header-actions button{flex:1;min-height:44px}.input-grid{grid-template-columns:1fr}.prep-panel,.preview-panel,.refine-panel{padding:14px 16px;border-radius:var(--r-lg)}.section-heading{gap:8px;margin-bottom:12px}}.result-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(330px,.82fr);gap:20px;align-items:start}.preview-panel,.refine-panel{padding:24px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);box-shadow:var(--shadow-sm)}.preview-panel{min-height:380px}.document-panel{position:relative;overflow:hidden}.document-panel:before{position:absolute;top:0;left:28px;width:64px;height:6px;border-radius:0 0 var(--r-sm) var(--r-sm);background:var(--clay);content:""}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-heading span{color:var(--ink-soft);font-size:13px;font-weight:700}.day-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.day-row span{padding:6px 12px;border:1px solid rgba(31,111,91,.22);border-radius:var(--r-full);color:var(--pine-deep);background:var(--pine-tint);font-size:13px;font-weight:700}.line-preview{display:grid;gap:18px;margin-top:18px;max-height:540px;overflow:auto;padding-right:6px}.line-preview::-webkit-scrollbar{width:10px}.line-preview::-webkit-scrollbar-thumb{border:3px solid var(--card);border-radius:var(--r-full);background:var(--line-strong)}.preview-group{display:grid;gap:8px;padding-top:16px;border-top:1px solid var(--line)}.preview-group:first-child{padding-top:0;border-top:0}.preview-group h4{margin:0;color:var(--pine-deep);font-size:14px;font-weight:800;letter-spacing:.01em}.preview-line,.refine-result{margin:0;padding:10px 13px;border-left:3px solid transparent;border-radius:var(--r-sm);color:#34302a;line-height:1.75}.preview-line.heading{border-left-color:var(--line-strong);color:var(--ink);background:var(--card-tint);font-weight:800}.preview-line.numbered{padding-left:20px}.refine-result{border-left-color:var(--pine);background:var(--pine-tint)}.empty-state{display:grid;gap:12px;min-height:320px;place-items:center;align-content:center;color:var(--ink-soft);text-align:center}.empty-mark{display:grid;width:76px;height:76px;place-items:center;border:1px solid rgba(31,111,91,.18);border-radius:var(--r-full);color:var(--pine);background:var(--pine-tint)}.empty-state strong{color:var(--ink);font-size:16px}.empty-state span{max-width:280px}.refine-panel{display:grid;align-content:start;gap:16px}.preset-row{display:flex;flex-wrap:wrap;gap:8px}.preset-row button{padding:7px 13px;border:1px solid var(--line);border-radius:var(--r-full);color:var(--ink-soft);background:var(--card);font-size:13px;font-weight:700;transition:border-color .14s ease,background .14s ease,color .14s ease}.preset-row button:hover{border-color:var(--line-strong)}.preset-row button.selected{border-color:#1f6f5b57;color:var(--pine-deep);background:var(--pine-tint)}@media (max-width: 900px){.result-layout{grid-template-columns:1fr}}.case-form{display:grid;gap:16px}.select-field,.month-field{display:grid;gap:10px;min-height:96px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card)}.select-field>span,.month-field>span,.rules-field>span{display:inline-flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:13px;font-weight:700}.select-field>span svg,.month-field>span svg,.rules-field>span svg{color:var(--pine)}.select-field select,.month-field input{width:100%;height:46px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);background:#fff;font-size:15px;font-weight:600;transition:border-color .16s ease,box-shadow .16s ease}.select-field select:focus-visible,.month-field input:focus-visible{outline:none;border-color:var(--pine);box-shadow:var(--ring)}.rules-field{display:grid;gap:10px}.rules-field textarea{min-height:92px}.case-form .class-level-field{min-height:104px;grid-column:1 / -1}.case-records{display:grid;gap:16px;margin-top:4px;max-height:600px;overflow:auto;padding-right:6px}.case-records::-webkit-scrollbar{width:10px}.case-records::-webkit-scrollbar-thumb{border:3px solid var(--card);border-radius:var(--r-full);background:var(--line-strong)}.case-record{display:grid;gap:14px;padding:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--shadow-sm)}.case-record-head{display:flex;align-items:center;gap:10px}.case-record-head strong{font-size:16px;color:var(--ink)}.case-activity{padding:5px 12px;border:1px solid rgba(192,97,62,.28);border-radius:var(--r-full);color:#9a4a2f;background:var(--clay-tint);font-size:13px;font-weight:700}.case-section{display:grid;gap:6px}.case-section h4{margin:0;color:var(--pine-deep);font-size:14px;font-weight:800}.case-section p{margin:0;color:#34302a;line-height:1.75}
