:root { --ink:#2e2925; --muted:#756c66; --paper:#fbf7f2; --line:#e7ddd5; --white:#fffdf9; --shadow:0 12px 28px rgba(78,57,42,.09); }
* { box-sizing:border-box; } body { margin:0; background-color:var(--paper); background-attachment:fixed; color:var(--ink); font:16px/1.4 ui-rounded, "Nunito", "Segoe UI", sans-serif; min-height:100vh; padding-bottom:84px; transition:background .3s ease; } a { color:inherit; text-decoration:none; }
body.theme-warm { background-image:radial-gradient(circle at 8% 4%,rgba(247,216,198,.65),transparent 31%),radial-gradient(circle at 95% 28%,rgba(229,221,242,.42),transparent 28%),linear-gradient(155deg,#fffaf5,#f8f2eb 70%); }
body.theme-meadow { --paper:#f4f8f1; --line:#dbe5d7; background-image:radial-gradient(circle at 8% 2%,rgba(191,221,185,.68),transparent 34%),radial-gradient(circle at 92% 34%,rgba(249,232,183,.46),transparent 29%),linear-gradient(155deg,#f9fcf7,#edf5ea); }
body.theme-sunset { --paper:#fff5f1; --line:#eadbd7; background-image:radial-gradient(circle at 5% 0,rgba(251,195,170,.7),transparent 36%),radial-gradient(circle at 94% 30%,rgba(207,187,231,.56),transparent 33%),linear-gradient(155deg,#fff9f5,#f7edf4); }
body.theme-sky { --paper:#f2f7fa; --line:#d8e3e9; background-image:radial-gradient(circle at 10% 0,rgba(182,219,239,.72),transparent 38%),radial-gradient(circle at 92% 38%,rgba(229,221,242,.5),transparent 30%),linear-gradient(155deg,#fafdff,#edf5f8); }
.shell { width:min(100%, 560px); margin:auto; padding:calc(16px + env(safe-area-inset-top)) 20px 24px; }.site-bar { align-items:center;display:flex;justify-content:space-between;margin-bottom:24px; }.site-bar form { margin:0; }.site-brand { font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;font-size:1.32rem;font-weight:700;letter-spacing:-.03em; }.site-brand span { color:#b66e55;font-size:.62em;margin-left:3px;vertical-align:top; }.logout-button { background:rgba(255,253,249,.48);border:1px solid rgba(117,108,102,.2);border-radius:999px;color:var(--muted);cursor:pointer;font:700 .72rem/1 ui-rounded,"Segoe UI",sans-serif;padding:7px 10px; }.logout-button:hover,.logout-button:focus-visible { background:var(--white);color:var(--ink); }.dashboard-header,.page-header { margin-bottom:22px; }.dashboard-header { display:flex; justify-content:space-between; align-items:flex-start;gap:12px; }.eyebrow,.module-kicker { color:var(--muted); font-size:.74rem; font-weight:700; letter-spacing:.08em; margin:0; text-transform:uppercase; } h1 { font-size:1.8rem; line-height:1.15; margin:5px 0 0; letter-spacing:-.04em; } .welcome-message { font-family:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;font-size:clamp(2rem,9vw,2.75rem);font-weight:500;letter-spacing:-.045em;line-height:1.02;max-width:440px;text-wrap:balance; }.welcome-message>span { display:block; }.welcome-addition { color:#5e4a40;font-size:.62em;font-style:italic;letter-spacing:-.025em;line-height:1.12;margin-top:10px;max-width:430px; } h2 { font-size:1.05rem; line-height:1.15; margin:6px 0; } .page-header p { color:var(--muted); margin:8px 0 0; }.round-button { flex:0 0 42px;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:rgba(233,221,209,.82);font-size:1.25rem;backdrop-filter:blur(8px); }
.module-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(6,94px); gap:12px; }.module-card { grid-column:var(--column) / span var(--width); grid-row:var(--row) / span var(--height); border-radius:22px; box-shadow:var(--shadow); padding:16px; position:relative; overflow:hidden; transition:transform .16s ease; }.module-card:active { transform:scale(.98); }.module-card p { color:#5d5149; font-size:.86rem; margin:0; max-width:92%; }.module-arrow { position:absolute;right:15px;bottom:12px;font-size:1.3rem; }.accent-peach { background:#f7d8c6; }.accent-lilac { background:#e5ddf2; }.accent-sage { background:#d9e8d5; }.accent-sky { background:#d9e9f2; }.accent-sun { background:#f8ebba; }
.bottom-nav { position:fixed; z-index:2; bottom:0; left:0; right:0; margin:auto; width:min(100%,560px); background:rgba(255,253,249,.92); backdrop-filter:blur(14px); border-top:1px solid var(--line); display:flex; justify-content:space-around; padding:10px 20px calc(10px + env(safe-area-inset-bottom)); }.bottom-nav a { font-size:.72rem; color:var(--muted); text-align:center; }.bottom-nav span { display:block; font-size:1.25rem; }.bottom-nav .is-current { color:var(--ink); font-weight:700; }
.language-picker { bottom:calc(70px + env(safe-area-inset-bottom)); display:flex; gap:4px; align-items:center; position:fixed; right:16px; z-index:3; background:var(--white); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); padding:5px 8px; font-size:.72rem; font-weight:700; }.language-picker select { background:transparent; border:0; color:var(--ink); font:inherit; padding:2px; }
.button { border:0;border-radius:14px;cursor:pointer;display:inline-block;font:inherit;font-weight:700;padding:13px 18px;text-align:center;margin:12px 0; }.button-primary { background:#5d4232;color:white; }.button-secondary { background:#eee4da; }.button-danger { background:#9e3f3d;color:white; }.button-full { width:100%; }.text-button { color:#694832;font-weight:700;font-size:.88rem; }.back-link { display:inline-block;color:var(--muted);font-weight:700;margin-bottom:12px; }
.module-list { margin-top:14px; }.module-list-item { align-items:center;background:var(--white);border:1px solid var(--line);border-radius:18px;display:flex;justify-content:space-between;margin:10px 0;padding:15px; }.module-list-item h2 { margin:3px 0; }.module-list-item p { color:var(--muted);font-size:.8rem;margin:0; }.module-form { background:var(--white);border:1px solid var(--line);border-radius:20px;margin:15px 0;padding:16px; }.module-form label,.login-card label { display:block;font-size:.85rem;font-weight:700;margin:12px 0; }.field-control,.login-card input { background:white;border:1px solid #d7cbc2;border-radius:10px;display:block;font:inherit;margin-top:5px;padding:10px;width:100%; }.module-form textarea { resize:vertical; }.module-form ul.errorlist,.errorlist { color:#9e3f3d;margin:6px 0;padding-left:18px;font-size:.8rem; }.toggle-row { align-items:center;display:flex!important;gap:8px; }.toggle-row input { width:18px;height:18px; }.detail-card,.empty-state,.login-card { border-radius:22px;padding:22px; }.detail-card { margin:18px 0;min-height:200px; }.detail-summary { font-size:1.25rem;font-weight:700;line-height:1.3;margin-top:0; }.detail-text { color:#4d443e; }.empty-state { background:#f1e9e1;text-align:center;margin-top:30px; }.login-card { background:rgba(255,253,249,.9);box-shadow:var(--shadow);margin-top:12vh;backdrop-filter:blur(14px); }.login-brand { display:inline-block;font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;font-size:1.65rem;font-weight:700;margin-bottom:22px; }.login-brand span { color:#b66e55;font-size:.6em;margin-left:3px;vertical-align:top; }.login-card h1 { font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;font-size:2.15rem;font-weight:500; }.toast { background:#314b3a;border-radius:10px;color:white;margin-bottom:15px;padding:10px 13px;font-size:.9rem; }
.canvas-organizer { margin-top:30px; }.canvas-heading { align-items:flex-end;display:flex;justify-content:space-between;gap:12px; }.canvas-heading h2 { font-family:"Iowan Old Style",Georgia,serif;font-size:1.5rem;font-weight:500;margin:3px 0 0; }.canvas-heading>span { color:var(--muted);font-size:.68rem;text-align:right; }.canvas-organizer .module-list-item { cursor:grab;gap:11px;padding:12px 12px 12px 8px;position:relative;transition:box-shadow .15s,opacity .15s,transform .15s; }.module-list-item.is-dragging { box-shadow:0 18px 38px rgba(78,57,42,.18);opacity:.55;transform:scale(.985); }.drag-handle { align-self:stretch;background:transparent;border:0;color:#9d9188;cursor:grab;font-size:1.35rem;padding:0 4px;touch-action:none; }.module-list-copy { flex:1;min-width:0; }.module-list-copy h2 { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }.module-list-actions { align-items:flex-end;display:flex;flex-direction:column;gap:8px; }.move-buttons { display:flex;gap:4px; }.move-buttons form { margin:0; }.move-buttons button { background:#f3ece5;border:0;border-radius:9px;color:var(--ink);cursor:pointer;font-size:1rem;height:30px;width:32px; }.move-buttons button:disabled { cursor:default;opacity:.28; }.accent-edge-peach { border-left:6px solid #eeb897; }.accent-edge-lilac { border-left:6px solid #c9b8df; }.accent-edge-sage { border-left:6px solid #aac8a2; }.accent-edge-sky { border-left:6px solid #a9ccdf; }.accent-edge-sun { border-left:6px solid #e7cf72; }.module-edit-preview { border-radius:20px;display:flex;flex-direction:column;margin:16px 0;padding:18px; }.module-edit-preview span { color:#655a52;font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase; }.module-edit-preview strong { font-family:"Iowan Old Style",Georgia,serif;font-size:1.4rem;margin-top:9px; }.module-edit-preview small { color:#5d5149;margin-top:3px; }.module-form label>small { color:var(--muted);display:block;font-size:.72rem;font-weight:400;margin-top:4px; }.remove-module { background:rgba(255,253,249,.7);border:1px solid var(--line);border-radius:15px;margin:10px 0;padding:12px 14px; }.remove-module summary { color:#8a3a38;cursor:pointer;font-size:.84rem;font-weight:800; }.remove-module p { color:var(--muted);font-size:.78rem;margin:10px 0 0; }.remove-module .button { margin-bottom:0; }.installed-actions { margin-top:12px; }.edit-remove { margin:18px 0 30px; }
.appearance-section { margin:26px 0; }.appearance-section h2 { font-size:1.35rem;margin-bottom:10px; }.appearance-section>p:not(.eyebrow) { color:var(--muted);font-size:.86rem;margin:0 0 12px; }.appearance-item { border-radius:20px;box-shadow:var(--shadow);padding:16px; }.appearance-item strong { display:block;font-size:1.05rem;margin-top:4px; }.appearance-item p { color:var(--muted);font-size:.82rem;margin:3px 0 0; }.appearance-item form { margin-top:8px; }.appearance-item .button { margin:4px 0 0;width:100%; }.appearance-icon { float:right;font-size:1.5rem; }.canvas-section-label { margin-top:28px; }.background-section { background:rgba(255,253,249,.64);border:1px solid rgba(231,221,213,.72);border-radius:22px;padding:17px;backdrop-filter:blur(10px); }.theme-choices { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }.theme-choice { background:rgba(255,255,255,.68);border:1px solid var(--line);border-radius:15px;cursor:pointer;display:grid;gap:7px;padding:8px;position:relative; }.theme-choice input { position:absolute;right:9px;top:9px;accent-color:#5d4232; }.theme-choice strong { font-size:.78rem;padding:0 2px 2px; }.theme-swatch { border-radius:10px;display:block;height:58px; }.theme-preview-warm .theme-swatch { background:linear-gradient(135deg,#f7d8c6,#fbf7f2 52%,#e5ddf2); }.theme-preview-meadow .theme-swatch { background:linear-gradient(135deg,#bfdcad,#f8efc8 58%,#f4f8f1); }.theme-preview-sunset .theme-swatch { background:linear-gradient(135deg,#f7bda5,#f8e5dc 48%,#cfbbe7); }.theme-preview-sky .theme-swatch { background:linear-gradient(135deg,#b6dbef,#edf6fa 50%,#ded7ed); }
.chat-header { margin-bottom:12px; }.chat-box { display:flex; flex-direction:column; gap:10px; min-height:360px; max-height:58vh; overflow-y:auto; padding:8px 2px 18px; }.chat-message { max-width:86%; border-radius:18px; padding:10px 14px; }.chat-message span { display:block; font-size:.68rem; font-weight:800; letter-spacing:.05em; margin-bottom:3px; text-transform:uppercase; opacity:.65; }.chat-message p { margin:0; }.chat-message.assistant { align-self:flex-start; background:#e5ddf2; border-bottom-left-radius:5px; }.chat-message.user { align-self:flex-end; background:#5d4232; color:white; border-bottom-right-radius:5px; }.chat-notice { background:#f8ebba; border-radius:14px; color:#5d5149; font-size:.86rem; padding:12px; }.chat-form { align-items:flex-end; background:var(--white); border:1px solid var(--line); border-radius:18px; display:flex; gap:8px; padding:7px; position:sticky; bottom:74px; box-shadow:var(--shadow); }.chat-input { border:0; flex:1; font:inherit; max-height:130px; outline:0; padding:8px; resize:none; }.chat-send { background:#5d4232; border:0; border-radius:13px; color:white; cursor:pointer; flex:0 0 44px; font-size:1.3rem; height:44px; }.chat-send:disabled { cursor:not-allowed; opacity:.35; }.chat-privacy { color:var(--muted); font-size:.72rem; text-align:center; }
.weather-mini { align-items:center;display:flex;gap:8px;margin-top:12px; }.weather-mini-icon { font-size:2rem;line-height:1; }.weather-mini strong { display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:1.75rem;line-height:.95; }.weather-mini small { color:#5d5149;display:block;font-size:.65rem;margin-top:3px;white-space:nowrap; }.weather-signals { display:flex;flex-wrap:wrap;gap:5px;margin-top:11px; }.weather-signals span { align-items:center;background:rgba(255,255,255,.42);border-radius:999px;display:flex;font-size:.62rem;font-weight:700;gap:3px;padding:4px 6px; }.weather-signals b { font-size:.78rem; }.weather-page-header { margin-bottom:18px; }.weather-hero { align-items:center;display:flex;gap:15px;margin-top:8px; }.weather-hero-icon { font-size:4rem;line-height:1; }.weather-hero h1 { font-family:"Iowan Old Style",Georgia,serif;font-size:4.4rem;font-weight:500;line-height:.85;margin:0; }.weather-hero p { color:var(--muted);font-size:.88rem;margin:8px 0 0; }.weather-section { margin:29px 0; }.weather-section h2 { font-family:"Iowan Old Style",Georgia,serif;font-size:1.65rem;font-weight:500;letter-spacing:-.03em;margin:3px 0 13px; }.advice-grid { display:grid;gap:9px; }.advice-card { align-items:flex-start;background:rgba(255,253,249,.78);border:1px solid rgba(231,221,213,.7);border-radius:18px;display:flex;gap:12px;padding:14px;backdrop-filter:blur(10px); }.advice-card>span { display:grid;font-size:1.35rem;height:38px;place-items:center;width:38px; }.advice-card h3 { font-size:.92rem;margin:0 0 3px; }.advice-card p { color:var(--muted);font-size:.78rem;margin:0; }.advice-card.tone-rain { background:rgba(217,233,242,.82); }.advice-card.tone-jacket { background:rgba(229,221,242,.82); }.advice-card.tone-wind { background:rgba(220,235,237,.84); }.advice-card.tone-haze { background:rgba(248,235,186,.82); }.daypart-grid { display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr)); }.daypart-grid article { background:rgba(255,253,249,.74);border:1px solid var(--line);border-radius:17px;display:flex;flex-direction:column;padding:11px;text-align:center; }.daypart-icon { font-size:1.65rem; }.daypart-grid strong { font-size:.72rem;margin-top:2px; }.daypart-grid b { font-family:"Iowan Old Style",Georgia,serif;font-size:1.65rem;font-weight:500; }.daypart-grid small { color:var(--muted);font-size:.62rem;min-height:28px; }.daypart-grid div { display:flex;justify-content:space-around;margin-top:7px; }.daypart-grid div span { font-size:.58rem;font-weight:700; }.hour-strip { display:flex;gap:8px;overflow-x:auto;padding:2px 1px 9px;scroll-snap-type:x mandatory; }.hour-strip article { background:rgba(255,253,249,.72);border:1px solid var(--line);border-radius:15px;display:flex;flex:0 0 76px;flex-direction:column;padding:10px 6px;scroll-snap-align:start;text-align:center; }.hour-strip time,.hour-strip small { color:var(--muted);font-size:.65rem; }.hour-strip article>span { font-size:1.45rem;margin:6px 0 2px; }.weather-facts { display:grid;gap:9px;grid-template-columns:repeat(2,minmax(0,1fr));margin:28px 0; }.weather-facts article { align-items:flex-start;background:rgba(255,253,249,.74);border:1px solid var(--line);border-radius:17px;display:flex;gap:9px;padding:13px; }.weather-facts article>span { font-size:1.35rem; }.weather-facts small { color:var(--muted);display:block;font-size:.65rem;font-weight:700;text-transform:uppercase; }.weather-facts strong { display:block;font-size:.94rem;margin:2px 0; }.weather-facts p { color:var(--muted);font-size:.67rem;margin:0; }.air-section { background:rgba(217,232,213,.68);border-radius:21px;padding:16px; }.air-title { align-items:flex-start;display:flex;justify-content:space-between;gap:8px; }.air-section h2 { margin-bottom:8px; }.air-section>p { color:#566052;font-size:.8rem;margin:0 0 12px; }.aqi-badge { background:rgba(255,255,255,.66);border-radius:999px;font-size:.65rem;font-weight:800;padding:6px 8px;white-space:nowrap; }.aqi-badge.tone-warning,.aqi-badge.tone-danger { background:#f7d8c6; }.aqi-badge.tone-watch { background:#f8ebba; }.air-values { display:flex;gap:6px; }.air-values span { background:rgba(255,255,255,.48);border-radius:10px;font-size:.62rem;padding:6px 8px; }.weather-source { color:var(--muted);font-size:.68rem;margin:25px 4px;text-align:center; }
