:root{color-scheme:light;font-family:ui-rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17241e;background:#f3f1e9;font-synthesis:none;--ink: #17241e;--muted: #68756e;--paper: #fffef9;--line: #dfe2db;--green: #1d3a2d;--mint: #c5f0c8;--gold: #ffd86b;--violet: #8d72e8;--shadow: 0 12px 32px rgba(27, 50, 38, .08)}*{box-sizing:border-box}html{min-height:100%;background:#f3f1e9}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:radial-gradient(circle at 18px 18px,rgba(36,91,64,.055) 2px,transparent 2.5px) 0 0 / 34px 34px,radial-gradient(circle at 90% -5%,rgba(162,205,170,.28),transparent 27rem),linear-gradient(180deg,#f7f5ee,#eeede6)}button,input{font:inherit}button{color:inherit}button,label{-webkit-tap-highlight-color:transparent}#app{width:min(100%,780px);margin:0 auto;padding:env(safe-area-inset-top) 18px calc(96px + env(safe-area-inset-bottom))}.app-header{padding:24px 2px 18px}.header-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.app-header p,.app-header time{margin:0}.app-header p{font-family:ui-rounded,system-ui,sans-serif;font-size:clamp(1.25rem,5vw,1.6rem);font-weight:800;letter-spacing:-.035em}.app-header time{display:block;margin-top:2px;color:var(--muted);font-size:.84rem}.sync-pill{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:7px 10px;border:1px solid rgba(23,36,30,.1);border-radius:999px;background:#fffef9b8;color:var(--muted);font-size:.66rem;font-weight:700;white-space:nowrap}.sync-pill span{width:7px;height:7px;border-radius:50%;background:#4ca66a;box-shadow:0 0 0 3px #4ca66a24}.sync-pill.aging span{background:#d29a35;box-shadow:0 0 0 3px #d29a3526}.sync-pill.stale span{background:#c95c50;box-shadow:0 0 0 3px #c95c5026}.xp-strip{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:14px;padding:10px 12px;overflow:hidden;border:1px solid rgba(65,47,12,.1);border-radius:17px;background:linear-gradient(120deg,#fff6cb,#ffe99a 55%,#f6d57c);box-shadow:0 8px 22px #56401217}.level-badge{display:grid;place-items:center;min-width:48px;height:32px;padding:0 8px;border-radius:10px;background:#332b24;color:var(--gold);font-size:.72rem;font-weight:900;letter-spacing:.04em}.xp-main{min-width:0}.xp-main>div:first-child{display:flex;justify-content:space-between;gap:8px;margin-bottom:5px;font-size:.68rem}.xp-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xp-main span{color:#725b24;font-weight:800;white-space:nowrap}.xp-track{height:7px;overflow:hidden;border-radius:99px;background:#45341424}.xp-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ed7a49,#dd4e9b 55%,#8167df);box-shadow:0 0 10px #dd4e9b5c;transition:width .35s cubic-bezier(.2,.8,.2,1)}.xp-main>small{display:block;margin-top:4px;color:#4b3814a8;font-size:.57rem;font-weight:700}.xp-star{color:#8b6722;font-size:1.1rem}.xp-strip.xp-pop{animation:xp-pop .36s ease-out}@keyframes xp-pop{45%{transform:scale(1.018);box-shadow:0 9px 26px #bf701b33}}.view{display:grid;gap:14px}.hero-card{position:relative;overflow:hidden;padding:22px;border-radius:28px;background:var(--green);color:#fff;box-shadow:0 18px 45px #142c2033}.hero-card:after{position:absolute;content:"";width:190px;height:190px;top:-85px;right:-55px;border:42px solid color-mix(in srgb,var(--course, #9bd5a6) 80%,white);border-radius:50%;opacity:.18;pointer-events:none}.hero-card:before{position:absolute;z-index:0;content:"✦";top:16px;right:19px;color:var(--gold);font-size:1.1rem;opacity:.9;transform:rotate(12deg)}.hero-card.active{background:color-mix(in srgb,var(--course) 35%,#18271f)}.hero-card.calm{background:#26362f}.eyebrow{margin:0 0 7px;color:inherit;font-size:.74rem;font-weight:800;letter-spacing:.095em;text-transform:uppercase;opacity:.72}.hero-card h1,.page-intro h1{margin:0;font-family:ui-rounded,system-ui,sans-serif;font-size:clamp(2rem,10vw,3.25rem);line-height:.98;letter-spacing:-.055em}.room-callout{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:24px 0 6px;padding-top:16px;border-top:1px solid rgba(255,255,255,.17)}.room-callout span{color:#ffffffb8;font-size:.86rem}.room-callout strong{font-family:ui-rounded,system-ui,sans-serif;font-size:clamp(1.8rem,10vw,3rem);letter-spacing:-.055em}.hero-topic{margin:4px 0 0;color:#ffffffc7;font-size:.9rem;line-height:1.45}.prep-box{position:relative;z-index:1;margin-top:20px;padding:14px;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:#ffffff14}.prep-title{display:flex;justify-content:space-between;margin-bottom:5px;font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.prep-title span{color:var(--gold)}.prep-title span:before{content:"◆ ";font-size:.58rem}.prep-title small{color:var(--mint)}.check-row{position:relative;display:flex;align-items:center;gap:10px;min-height:39px;cursor:pointer;font-size:.86rem}.check-xp{flex:0 0 auto;margin-left:auto;padding:3px 6px;border-radius:99px;background:#ffd86b26;color:var(--gold);font-size:.58rem;font-weight:900;text-decoration:none!important}.mini-section .check-xp,.attendance-quests .check-xp{background:#fff1bb;color:#73571d}.check-row input{position:absolute;opacity:0;pointer-events:none}.check-box{flex:0 0 auto;width:20px;height:20px;border:1.5px solid currentColor;border-radius:7px;opacity:.55}.check-row.is-done .check-box,.check-row input:checked+.check-box{border-color:#9ee3aa;background:#9ee3aa;box-shadow:inset 0 0 0 4px var(--green);opacity:1}.check-row.is-done>span:last-child,.check-row:has(input:checked)>span:last-child{text-decoration:line-through;opacity:.55}.next-deadline{position:relative;z-index:1;margin:14px 2px 0;color:#ffffffad;font-size:.76rem;line-height:1.4}.next-deadline strong{color:#fff}.adventure-card{overflow:hidden;border:1px solid rgba(36,49,40,.09);border-radius:26px;background:var(--paper);box-shadow:0 16px 38px #28362c1c}.adventure-art{position:relative;min-height:184px;padding:16px;background:linear-gradient(180deg,#0d1d1614,#0d1d1670),url(/art/campus-quest-map.webp) center 54% / cover}.map-topline{position:absolute;top:14px;left:14px;display:grid;gap:2px;max-width:65%;padding:8px 11px;border:1px solid rgba(255,255,255,.48);border-radius:13px;background:#14271db8;color:#fff;box-shadow:0 5px 20px #101f172e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.map-topline span{color:#ffe49a;font-size:.56rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.map-topline strong{overflow:hidden;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.streak-chip{position:absolute;right:14px;bottom:14px;display:grid;grid-template-columns:auto auto;align-items:center;column-gap:5px;padding:8px 10px;border:1px solid rgba(255,255,255,.54);border-radius:13px;background:#fffbe9e6;color:#533e1b;box-shadow:0 7px 20px #20261c26;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.streak-chip>span{grid-row:1 / 3;font-size:1.2rem}.streak-chip strong{font-size:.9rem;line-height:1}.streak-chip small{color:#7c6a49;font-size:.55rem}.adventure-body{padding:17px}.adventure-heading{display:flex;align-items:end;justify-content:space-between;gap:12px}.adventure-heading .eyebrow,.adventure-heading h2{margin:0}.adventure-heading .eyebrow{color:#8c6990}.adventure-heading h2{margin-top:3px;font-family:ui-rounded,system-ui,sans-serif;font-size:1.16rem;letter-spacing:-.035em}.adventure-heading>span{padding:5px 8px;border-radius:99px;background:#f0eafa;color:#735d9a;font-size:.61rem;font-weight:800;white-space:nowrap}.day-progress{margin:16px 0 12px}.day-progress>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px;font-size:.68rem}.day-progress span{color:var(--muted)}.day-progress>div:last-child{height:9px;overflow:hidden;border-radius:99px;background:#e8e8de}.day-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#64a986,#71c19a,#f2c95f);transition:width .35s ease}.attendance-quests{display:grid;padding:3px 11px;border:1px solid #e8e3d4;border-radius:15px;background:#faf8f0}.attendance-quests .check-row+.check-row{border-top:1px solid #e8e3d4}.attendance-quests .check-row>span:nth-of-type(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rest-day{margin:12px 0;color:var(--muted);font-size:.76rem}.badge-shelf{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:14px}.badge{display:grid;justify-items:center;gap:5px;min-width:0;color:#7b847f;text-align:center}.badge>span{display:grid;place-items:center;width:36px;height:36px;border:1px solid #dfe1da;border-radius:50%;background:#eceee8;font-size:1rem;filter:grayscale(1)}.badge small{overflow:hidden;max-width:100%;font-size:.52rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.badge.unlocked{color:#6a5020}.badge.unlocked>span{border-color:#f0cf6c;background:linear-gradient(145deg,#fff3b7,#f5cd68);box-shadow:0 5px 13px #9f6e1429;filter:none}.confetti-burst{position:fixed;z-index:100;top:42%;left:50%;width:1px;height:1px;pointer-events:none}.confetti-burst i{position:absolute;width:8px;height:12px;border-radius:3px;background:var(--c);animation:confetti .78s cubic-bezier(.14,.7,.3,1) var(--d) both}@keyframes confetti{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--x),135px) rotate(var(--r))}}.panel{border:1px solid rgba(24,42,33,.075);border-radius:22px;background:#fffef9e0;box-shadow:var(--shadow)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:17px 17px 12px}.section-heading h2{margin:0;font-family:ui-rounded,system-ui,sans-serif;font-size:1rem;letter-spacing:-.025em}.section-heading span{color:var(--muted);font-size:.72rem}.agenda-list{display:grid;padding:0 8px 8px}.agenda-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;min-height:66px;padding:10px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left}.agenda-row:first-child{border-top:0}button.agenda-row{cursor:pointer}.time-stack{display:grid;gap:2px;font-size:.76rem;text-align:right}.time-stack small{color:var(--muted)}.agenda-main{display:grid;min-width:0;gap:3px}.agenda-main strong{overflow:hidden;font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.agenda-main small{display:-webkit-box;overflow:hidden;color:var(--muted);font-size:.73rem;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.room-pill{min-width:56px;padding:7px 9px;border-radius:12px;background:color-mix(in srgb,var(--course) 14%,white);color:color-mix(in srgb,var(--course) 82%,#17241e);font-size:.76rem;font-weight:800;text-align:center}.deadline-row{grid-template-columns:48px minmax(0,1fr) 58px}.deadline-row>.check-row,.due-card>.check-row{justify-content:center;font-size:.68rem}.deadline-row>.check-row .check-box,.due-card>.check-row .check-box{width:18px;height:18px}.notice-row{grid-template-columns:12px minmax(0,1fr)}.notice-dot{width:8px;height:8px;border-radius:50%;background:var(--course)}.empty-day{padding-bottom:15px}.empty-day>p,.empty-copy{margin:0;padding:0 17px;color:var(--muted);font-size:.82rem}.due-list{display:grid;padding:0 10px 10px}.due-card{display:grid;grid-template-columns:42px minmax(0,1fr) 58px;align-items:center;gap:11px;padding:12px 7px;border-top:1px solid var(--line)}.due-card:first-child{border-top:0}.due-card.is-done{opacity:.52}.due-date{display:grid;justify-items:center;padding:7px 3px;border-radius:12px;background:color-mix(in srgb,var(--course) 11%,white);color:color-mix(in srgb,var(--course) 80%,var(--ink))}.due-date strong{font-family:ui-rounded,system-ui,sans-serif;font-size:1.12rem;line-height:1}.due-date span{margin-top:3px;font-size:.58rem;font-weight:800;text-transform:uppercase}.due-copy{display:grid;min-width:0;gap:2px}.due-copy>span{color:var(--course);font-size:.64rem;font-weight:800;text-transform:uppercase}.due-copy>strong{font-size:.86rem;line-height:1.2}.due-copy small{display:-webkit-box;overflow:hidden;color:var(--muted);font-size:.72rem;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.due-copy em{color:#89938e;font-size:.62rem;font-style:normal}.page-intro{padding:16px 4px 12px}.page-intro .eyebrow{color:#587064}.page-intro h1{color:var(--ink)}.page-intro>p:last-child{max-width:33rem;margin:12px 0 0;color:var(--muted);font-size:.88rem;line-height:1.5}.week-stack,.course-list{display:grid;gap:12px}.course-card{overflow:hidden;border:1px solid rgba(24,42,33,.08);border-radius:20px;background:#fffef9e6;box-shadow:0 8px 25px #1b32260e}.course-card.is-open{border-color:color-mix(in srgb,var(--course) 40%,var(--line))}.course-summary{display:grid;grid-template-columns:10px minmax(0,1fr) 26px;align-items:center;gap:12px;width:100%;min-height:74px;padding:12px 15px;border:0;background:transparent;text-align:left;cursor:pointer}.course-mark{width:8px;height:42px;border-radius:99px;background:var(--course)}.course-name{display:grid;gap:3px}.course-name strong{font-size:.96rem}.course-name small,.course-meta{color:var(--muted);font-size:.74rem}.chevron{color:var(--muted);font-size:1.3rem;transition:transform .18s ease}.course-card.is-open .chevron{transform:rotate(180deg)}.course-detail{padding:2px 18px 20px 40px;border-top:1px solid var(--line)}.course-detail h2{margin:18px 0 5px;font-family:ui-rounded,system-ui,sans-serif;font-size:1.32rem;line-height:1.12;letter-spacing:-.035em}.course-meta{margin:0;line-height:1.5}.course-description{margin:16px 0;font-size:.9rem;line-height:1.55}.course-detail dl{display:grid;margin:0}.course-detail dl>div{display:grid;grid-template-columns:74px minmax(0,1fr);gap:10px;padding:11px 0;border-top:1px solid var(--line)}.course-detail dt{color:var(--muted);font-size:.68rem;font-weight:700;text-transform:uppercase}.course-detail dd{margin:0;font-size:.8rem;line-height:1.45}.mini-section{margin:14px 0;padding:13px;border-radius:15px;background:#f2f3ed}.mini-section h3{margin:0 0 3px;font-size:.72rem;text-transform:uppercase}.mini-section .check-row{min-height:34px}.caution{margin:14px 0;padding:12px 13px;border-left:3px solid var(--course);border-radius:5px 13px 13px 5px;background:color-mix(in srgb,var(--course) 8%,white);font-size:.78rem;line-height:1.45}.course-detail>p:last-of-type{color:var(--muted);font-size:.8rem;line-height:1.5}.topic-list{margin-top:14px;border-top:1px solid var(--line)}.topic-list summary{padding:14px 0;font-size:.8rem;font-weight:800;cursor:pointer}.topic-list>div{display:grid;grid-template-columns:50px minmax(0,1fr);gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:.76rem}.topic-list time{color:var(--muted)}.form-panel{display:grid;gap:16px;padding:18px}.form-panel label{display:grid;gap:7px}.form-panel label>span{color:var(--muted);font-size:.72rem;font-weight:700}.form-panel input{width:100%;height:48px;padding:0 13px;border:1px solid var(--line);border-radius:13px;outline:0;background:#fff}.form-panel input:focus{border-color:#57916d;box-shadow:0 0 0 3px #57916d1f}.number-field{position:relative}.number-field input{padding-right:80px}.number-field em{position:absolute;top:15px;right:14px;color:var(--muted);font-size:.76rem;font-style:normal}.primary-button,.secondary-button{min-height:46px;border:0;border-radius:13px;font-weight:800;cursor:pointer}.primary-button{background:var(--green);color:#fff}.secondary-button{padding:0 14px;background:#e3ede6;color:var(--green)}.install-panel{display:grid;grid-template-columns:45px minmax(0,1fr) auto;align-items:center;gap:12px;padding:17px}.install-panel h2,.install-panel p{margin:0}.install-panel h2{font-family:ui-rounded,system-ui,sans-serif;font-size:.94rem}.install-panel p{margin-top:3px;color:var(--muted);font-size:.72rem;line-height:1.35}.icon-tile{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:var(--green);color:#fff;font-size:1.2rem}.install-help{grid-column:1 / -1;padding:12px;border-radius:12px;background:#eef3ed;font-size:.76rem;line-height:1.5}.source-panel>p{margin:0;padding:0 17px 16px;color:var(--muted);font-size:.82rem;line-height:1.5}.source-panel q{color:var(--ink);font-weight:700}.source-panel .small-copy{padding-top:0;font-size:.7rem}code{padding:2px 5px;border-radius:5px;background:#eceee8;color:#334b40;font-size:.68rem}.gap-list{margin:0;padding:0 24px 17px 36px;color:var(--muted);font-size:.78rem;line-height:1.55}.bottom-nav{position:fixed;z-index:20;left:50%;bottom:max(10px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);width:min(calc(100% - 24px),500px);padding:6px;border:1px solid rgba(255,255,255,.7);border-radius:21px;background:#fdfdf8e6;box-shadow:0 14px 40px #12261c33;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform:translate(-50%)}.bottom-nav button{display:grid;place-items:center;gap:2px;min-height:52px;border:0;border-radius:16px;background:transparent;color:#758079;font-size:.62rem;font-weight:700;cursor:pointer}.bottom-nav button>span{font-size:1.08rem;line-height:1}.bottom-nav button.active{background:var(--green);color:#fff}.toast{position:fixed;z-index:40;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));padding:10px 14px;border-radius:12px;background:#101c16;color:#fff;font-size:.78rem;opacity:0;pointer-events:none;transform:translate(-50%,10px);transition:.18s ease}.toast.show{opacity:1;transform:translate(-50%)}@media(min-width:700px){#app{padding-inline:26px}.next-view{grid-template-columns:1fr 1fr}.next-view .hero-card,.next-view>.panel:last-child{grid-column:1 / -1}.hero-card{padding:30px}.course-list{grid-template-columns:1fr 1fr;align-items:start}.course-card.is-open{grid-column:1 / -1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
